VBA - Validation données

uuubuuu Messages postés 4 Statut Membre -  
uuubuuu Messages postés 4 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

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

    1
  2. uuubuuu Messages postés 4 Statut Membre
     
    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
  3. uuubuuu Messages postés 4 Statut Membre
     
    Oups, ne pas lire la 2ème ligne de mon précédent post.
    J'avais testé autre chose...
    0
  4. uuubuuu Messages postés 4 Statut Membre
     
    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