IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName

Noter ce billet
par , 15/10/2020 à 18h02 (1509 Affichages)
Propriétés pour définir le nom d'une feuille
Une feuille Excel 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

Code pour écrire dans une feuille

A titre d'exemple, illustration d'un classeur contenant trois feuilles

[Nom : CodeName_1.png
Affichages : 2996
Taille : 35,6 Ko]

En VBA, il y a trois manières d’utiliser l’objet feuille.

Nous allons écrire le texte "Date" dans la cellule A1 de la feuille nommée [Recap] du classeur où se trouve le code VBA (ThisWorkbook)

Syntaxe 1 : On désigne la feuille par son numéro d’indice dans la collection.
La constante 3 utilisée pour l'exemple 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ThisWorkbook.Worksheets(3).Range("A1").Value = "Date"
Syntaxe 2 : On désigne la feuille par son nom.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ThisWorkbook.Worksheets("Recap").Range("A1").Value = "Date"
Syntaxe 3 : On désigne la feuille par son CodeName
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Feuil1.Range("A1").Value = "Date"

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 en utilisant shtRecap plutôt que Feuil1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
shtRecap.Range("A1").Value = "Date"
Cette modification s’effectue manuellement dans la fenêtre des propriétés mais pourrait se faire à l’aide du code VBA.

Ci-dessous, une vue de la fenêtre de l'explorateur des projets et celle des propriétés de la feuille nommée Bilan (Name) et shtBilan (CodeName) d'un autre classeur
Nom : Worksheet_Properties Name CodeName.png
Affichages : 758
Taille : 62,0 Ko

Pourquoi utiliser la propriété CodeName ?
La modification du nom de l'onglet par un utilisateur entrainera de facto, une erreur VBA si nous utilisons la propriété Name (Voir Syntaxe 2). L’utilisation du CodeName permet donc de s’affranchir de ce risque.

Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Viadeo Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Twitter Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Google Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Facebook Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Digg Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Delicious Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog MySpace Envoyer le billet « VBA Excel - Comment s’affranchir de la modification du nom de la feuille en utilisant son CodeName » dans le blog Yahoo

Catégories
VBA Excel

Commentaires

  1. Avatar de MarcelG
    • |
    • permalink
    Bonjour Philippe,

    Merci pour cet exposé constructif.

    En effet, j'ai plusieurs fois renommé mes feuilles de travail.
    Après 2 ou 3 ans d'exploitation, par les services clients de mon entité, j'ai dû utiliser CTRL + H au sein du VBE à tous de bras.

    Cela confirme une chose: on en apprend tous les jours.

    Bien à toi.
  2. Avatar de PANGOT911
    • |
    • permalink
    Bonjour à tous,
    J'avais utilisé le CodeName pour ma version 32b mais j'ai eu des messages d'erreurs en utilisation 64b (application qui fonctionne sur les 2 suivant la machine).
    En 64b, il me semble que la déclaration implicite ne fonctionne pas tout le temps.
    j'ai du utiliser la déclaration "Set" pour régler le problème.
    ' Par exemple définition de la feuille "Férié"
    Set WshFerie = Application.ThisWorkbook.Worksheets("Férié")
    ou avec le codeName
    Set WshFerie = Application.ThisWorkbook.Férié
    @+
  3. Avatar de Pierre Fauconnier
    • |
    • permalink
    Salut


    Citation Envoyé par PANGOT911
    [...]
    Set WshFerie = Application.ThisWorkbook.Férié
    @+
    Je ne sais pas si c'est lié, mais les caractères accentués dans les noms d'objets VBA, c'est pas le super top. Perso, je n'ai jamais eu de soucis à utiliser les codename, que du contraire