VBA - Validation données

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. 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 !
    1. Oups, ne pas lire la 2ème ligne de mon précédent post.
      J'avais testé autre chose...
      1. 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...