Pbm affectation d'un nom à une plage via une macro vba sur excel [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 juin 2013
-
Messages postés
2
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 juin 2013
-
Bonjour,

Je dois affecter des noms à des plages sur une feuille excel, et y faire référence dans une autre feuille (validation : liste et je met le nom de ma plage). Jusque là, pas de problème quand je le fait manuellement.
Mais maintenant, je dois pouvoir mettre à jour les noms si les plages sont modifiées. J'utilise donc une macro, pour que ce soit plus simple (éviter d'aller bidouiller dans les insertion nom définir etc). Le problème, c'est que quand je définis un nom via une macro, je ne peut plus y faire référence que dans la feuille qui contient la plage !

Voici le code que j'utilise :

Range("b2", Range("b2").End(xlDown)).Select
Names.Add Name:="marques", RefersTo:=Selection

Donc ça m'affecte le nom "marques" aux cellules de b2 jusqu'à b*, b* étant la dernière cellule non vide, dans la feuille mq.

Voila ce que j'ai remarqué :
1 - quand je rentre un nom manuellement, et que je vais voir dans insertion-nom-définir, le nom de la plage est écrit à gauche, et rien à droite. Je peux faire référence à ce nom dans n'importe quelle feuille.
2 - quand j'utilise la macro, le nom de la plage est toujours écrit à gauche, mais à droite est écrit également le nom de la feuille qui contient la plage. Je ne peux pas faire référence dans d'autres feuilles à ce nom.
3 - si j'ai, par exemple, déjà appelé manuellement la plage "toto" dans la feuille "azerty", et que j'utilise ensuite la macro pour faire la même chose, les deux noms existent (le nom "libre" et le nom "attaché"). Je peux faire référence au nom libre dans les autres feuilles, et dans la feuille azerty, la référence est en priorité le nom attaché à la feuille. Si je vais voir dans insertion-nom-définir dans la feuille azerty, seul le nom attaché (avec le nom de la feuille à droite) est affiché. Si je le supprime, le nom libre apparaît. Dans les autres feuilles, si je vais dans insertion-nom-définir, je vois seulement le nom libre.

J'aimerai savoir si c'est à cause de mon code que je ne peut pas définir des noms utilisables dans tout le classeur.

Pour info, je suis sur excel 2003...

Merci d'avance si quelqu'un peut m'aider ! J'espère que c'est assez clair...

3 réponses

Messages postés
8190
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
28 septembre 2020
1 474
J'aimerai savoir si c'est à cause de mon code que je ne peut pas définir des noms utilisables dans tout le classeur. : Oui

Puisque tu ne l'as pas précisé, VBA affecte le nom ajouté à l'objet courant, c'est à dire à la feuille soit :
ActiveWorksheet.Names.Add Name:="marques", RefersTo:=Selection

Pour un nom valable dans tout le classeur, la bonne syntaxe est :
ThisWorkbook.Names.Add Name:="marques", RefersTo:=Selection

Cordialement
Patrice
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
23505
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
28 septembre 2020
6 369
Bonjour à tous,

une autre syntaxe sympa :
Worksheets("Feuil2").[B2].Name = "toto"

et si le même nom doit être utilisé sur plusieurs feuilles, le spécifier :
Worksheets("Feuil2").[B2].Name = "Feuil2!toto"
Worksheets("Feuil3").[B2].Name = "Feuil3!toto"
appel : =Feuil2!toto

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Messages postés
2
Date d'inscription
vendredi 14 juin 2013
Statut
Membre
Dernière intervention
17 juin 2013

Merci beaucoup, ça marche nikel !