La propriété CodeName d’une feuille ou « Comment s’affranchir de la modification du nom de la feuille par un utilisateur ?« .
Une feuille a deux propriétés distinctes pour définir son nom
- Name : C’est le nom qui apparaît dans l’onglet de la feuille et que l’utilisateur peut modifier à sa guise
- CodeName : Est le nom de code de l’objet feuille
Voici en VBA trois manières d’utiliser l’objet feuille.
Pour notre exemple, nous allons écrire le texte « Date » dans la feuille nommée [Recap]
Exemple 1 : On désigne la feuille par son numéro d’indice dans la collection. Pour l’exemple 3 signifie que c’est la troisième feuille en partant de la gauche.
Ce type de désignation est à éviter car si l’utilisateur déplace la feuille 3 vers la gauche ou vers la droite ne n° d’indice ne sera plus correct.
ThisWorkbook.Worksheets(3).Range("A1").Value = "Date"
Exemple 2 : On désigne la feuille par son nom.
ThisWorkbook.Worksheets("Recap").Range("A1").Value = "Date"
Exemple 3 :
Feuil1.Range("A1").Value = "Date"
Pourquoi utiliser la propriété CodeName ?
Si l’utilisateur modifie le nom de l’onglet, le programme se mettra en erreur pour le deuxième exemple. L’utilisation de cette propriété permet donc de s’affranchir de ce risque.
Modification de la propriété CodeName
Il est évident que pour faciliter la compréhension de la lecture d’un code, il est préférable de modifier la valeur du CodeName.
L’exemple ci-dessous est plus lisible avec shtRecap qu’avec Feuil1
shtRecap.Range("A1").Value = "Date"
Cette modification s’effectue manuellement dans la fenêtre des propriétés mais peut évidemment se faire à l’aide du code VBA.
Manuellement
Dans l’exemple ci-dessous, nous pouvons voir où se trouve cette propriété
Comment écrire la ligne de code pour mettre
Feuil1 = ShRecap
Bonjour,
Si vous avez modifié le CodeName de la feuille en lui donnant comme nom shRecap, il suffit simplement de l’utiliser comme une variable objet soit par exemple shRecap.Activate