VBA - Validation données

Fermé
uuubuuu Messages postés 4 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 30 avril 2010 - 30 avril 2010 à 13:33
uuubuuu Messages postés 4 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 30 avril 2010 - 30 avril 2010 à 14:24
Bonjour à tous,

Je sais faire une validation sur une plage continue (toutes les cellules de B1 à B4):

Range("A1").Validation.Add _
Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=" & Range("B1:B4").Address

Ca me crée une validation (liste déroulante) dans la cellule A1. Tout va bien.

Mais j'aimerais faire quelque chose du genre :

Range("A1").Validation.Add _
Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=" & Union(Range("B1"), Range("B2"), Range("B4")).Address

C'est-à-dire mettre dans la liste déroulante des cellules se trouvant à différents endroits dans un tableau. En gros, comment n'avoir que les cellules qui m'intéressent dans la liste déroulante et non toute la plage.

Existe-t-il un moyen d'arriver à mes fins ?


Merci mille fois d'avance !

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
30 avril 2010 à 13:52
Bonjour,

Formula1:=Range("B2,B4,B6").Address

1
uuubuuu Messages postés 4 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 30 avril 2010
30 avril 2010 à 14:05
Merci Michel pour ta réactivité !

Je viens de tester et il me dit "Erreur définie par l'application"

Sheets(1).Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Range("C1,C3,C4").Address

Pas d'erreur.
La validation est créée mais elle contient "$C$1", "$C$3", etc

J'ai essayé en remplaçant Address par Value mais cela génère une erreur....
J'avoue être un peu débutant en VBA.

Je pense qu'on est vraiment pas loin.

As-tu une idée ?

Merci encore, ton aide m'est très précieuse !
0
uuubuuu Messages postés 4 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 30 avril 2010
30 avril 2010 à 14:06
Oups, ne pas lire la 2ème ligne de mon précédent post.
J'avais testé autre chose...
0
uuubuuu Messages postés 4 Date d'inscription vendredi 30 avril 2010 Statut Membre Dernière intervention 30 avril 2010
30 avril 2010 à 14:24
Donc, pour clarifier,

Formula1:=Range("C1,C3,C4").Address marche mais la liste contient les adresses "$C$1", etc.

Formula1:=Range("C1,C3,C4").Value génère une erreur

Formula1:="=" & Range("C1,C3,C4").Address génère une erreur

Quelqu'un aurait-il une idée ?

Merci encore, cela me simplifierait tellement la vie...
0