Ce didacticiel couvrira l'interaction avec les noms de feuilles dans VBA.
Obtenir le nom de la feuille
Les noms de feuilles sont stockés dans le Nom propriété de la Des draps ou Des feuilles de calcul objet. Le nom de la feuille est le nom de "l'onglet" visible en bas d'Excel :
Obtenir le nom ActiveSheet
Cela affichera le nom ActiveSheet dans une boîte de message :
1 | MsgBox ActiveSheet.Name |
Obtenir le nom de la feuille par numéro d'index
Cela affichera le premier nom de la feuille de calcul dans une boîte de message :
1 | Feuilles MsgBox(1).Nom |
Cela affichera le nom de la dernière feuille de calcul du classeur :
1 | MsgBox Sheets(Sheets.Count).Name |
Obtenir le nom de la feuille par nom de code
Dans l'éditeur VBA, il existe une option pour modifier le "nom de code" d'une feuille. Le nom de code n'est pas visible pour l'utilisateur Excel et ne peut être vu que dans l'éditeur VBA :
Dans VBA, lorsque vous travaillez avec Sheets, vous pouvez référencer le nom d'onglet habituel :
1 | Sheets("TabName").Activer |
ou le nom de code VBA :
1 | NomCode.Activer |
Il est souhaitable de référencer le nom de code au cas où le nom de l'onglet Feuille changerait. Si vous autorisez l'accès utilisateur Excel à la modification des noms de feuille, vous devez référencer le nom de code dans votre code VBA afin qu'une incompatibilité de nom d'onglet de feuille ne provoque pas d'erreur. Les noms de code de feuille sont discutés plus en détail ici.
Pour obtenir le nom de la feuille à l'aide du nom de code VBA, procédez comme suit :
1 | Nom de code MsgBox.Nom |
Renommer la feuille
Vous pouvez renommer Sheets en ajustant le Nom propriété de la Des draps ou Des feuilles de calcul objet.
Renommer ActiveSheet
1 | ActiveSheet.Name = "NouveauNom" |
Renommer la feuille par nom
1 | Sheets("OldSheet").Name = "NouveauNom" |
Renommer la feuille par numéro d'index de feuille
Ici, nous utilisons 1 pour renommer la première feuille du classeur.
1 | Sheets(1).Name = "NouveauNom" |
Renommer la feuille par nom de code
Ce code renommera une feuille en utilisant son nom de code VBA (discuté ci-dessus):
1 | Component.Name = "NouveauNom" |
Vérifier si le nom de la feuille existe
Nous avons créé une fonction pour tester si une feuille avec un nom particulier existe déjà.
123456789101112 | 'Test si une plage existe sur une feuille.'Laisser la plage vide pour tester si la feuille existe'Contributions:' WhatSheet - Nom de chaîne de la feuille (ex "Sheet1")' WhatRange (Facultatif, Par défaut = "A1") - Nom de chaîne de la plage (ex "A1")Function RangeExists (WhatSheet As String, Facultatif ByVal WhatRange As String = "A1") As BooleanTest de gradation en tant que plageEn cas d'erreur Reprendre ensuiteDéfinir le test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Err.Number = 0En cas d'erreur GoTo 0Fonction de fin |
La fonction retournera TRUE si la feuille existe, ou FALSE si ce n'est pas le cas.
Utilisez la fonction comme ceci :
123 | Sub Test_SheetExists()MsgBox RangeExists("configuration")Fin du sous-marin |
Copier la feuille et renommer
Cet exemple est tiré de notre article sur la copie de feuilles.
Après avoir copié et collé une feuille, la feuille nouvellement créée devient la feuille active. Donc, pour renommer une feuille copiée, utilisez simplement ActiveSheet.Name :
12345678 | Sub CopySheetRename2()Sheets("Sheet1").Copier après :=Sheets(Sheets.Count)En cas d'erreur Reprendre ensuiteActiveSheet.Name = "LastSheet"En cas d'erreur GoTo 0Fin du sous-marin |
Remarque : Nous avons ajouté la gestion des erreurs pour éviter les erreurs si le nom de la feuille existe déjà.