VBA : Noms de plage - Liste déroulante [Résolu]

stevfen77 2 Messages postés mardi 24 juillet 2007Date d'inscription 24 juillet 2007 Dernière intervention - 24 juil. 2007 à 14:44 - Dernière réponse : stevfen77 2 Messages postés mardi 24 juillet 2007Date d'inscription 24 juillet 2007 Dernière intervention
- 24 juil. 2007 à 17:46
Bonjour à mes lecteurs, merci par avance pour vos suggestions.

Le sujet :
1. Je souhaite nommer sous VBA (Excel 2007) une plage de cellules variable  (suivant le nombre de saisies effectuées par l'opérateur, la plage est + ou - longue).
2. Je veux récupérer, toujours sous VBA, cette plage, à partir de son nom pour alimenter une saisie à partir d'une liste déroulante.

Mon problème : A priori le code utilisé permet bien de sélectionner la plage concernée et de la nommer (je la retrouve avec des références correctes dans le gestionnaire de noms). En revanche le nom n'apparait pas lorsque l'on sélectionne manuellement la plage de cellules sur la feuille et il ne peut être invoqué par la liste déroulante créée qui ne fonctionne pas.

Le code :
*****
Sub ListeDepts()

Range ("C12").Select
Range (Selection, Selection.End(xlDown)).Select
ActiveSheet.Names.Add Name:="Depts", RefersTo:=Selection.Address

End Sub
*****

La liste est paramétrée dans une cellule de la feuille sur laquelle se trouve la zone nommée. Il s'agit d'une liste de saisie contrôlée.

En résumé : le code ci dessus sélectionne bien la plage "variable", le nom "Depts" est visiblement donné à cette plage. Mais le nom n'apparait pas sur un F5 et n'est pas reconnu par la liste !

C'est sûrement trivial, je me lance dans VBA avec comme seule base l'enregistreur de macro et la mine d'info placée sur le net par les bons.
Toute aide est appréciée, merci.

Stevfen
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 24 juil. 2007 à 16:01
3
Merci
Le pb vient de l'argument passé à RefersTo.
Toi tu donnes les coordonnées de la plage sous forme de String ($C$12:$C$16 par exemple), alors que ce qui est attendu, c'est un objet Range.

Il faut juste modifier un petit peu ta macro (et la simplifier en une seule ligne tant qu'on y est ^^) :
ActiveSheet.Names.Add Name:="Depts", RefersTo:=Range(Range("C12"), Range("C12").End(xlDown).Address)

Molenn

Merci Molenn 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Molenn
stevfen77 2 Messages postés mardi 24 juillet 2007Date d'inscription 24 juillet 2007 Dernière intervention - 24 juil. 2007 à 17:46
0
Merci
Molenn,

Je mesure à quel point j'ai des progrès à faire et en particulier sur les composantes de VBA. Je n'ai pas encore tout compris de ton argument, ce que je sais c'est que c'est efficace !
Merci pour ton aide.

Stevfen
Commenter la réponse de stevfen77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.