Pbm affectation d'un nom à une plage via une macro vba sur excel

Résolu/Fermé
Nykut Messages postés 2 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 17 juin 2013 - 14 juin 2013 à 15:20
Nykut Messages postés 2 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 17 juin 2013 - 17 juin 2013 à 09:08
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...
A voir également:

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
14 juin 2013 à 22:01
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 15/06/2013 à 17:20
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.
0
Nykut Messages postés 2 Date d'inscription vendredi 14 juin 2013 Statut Membre Dernière intervention 17 juin 2013
17 juin 2013 à 09:08
Merci beaucoup, ça marche nikel !
0