VBA Introduire une liste déroulante selon une variable

Bonjour,

Je voudrais utiliser une macro pour faire apparaître une liste déroulante en B1. Je souhaiterais que la liste qui s'affiche en B1 varie selon la valeur de A1.

Exemple

Si A1: "nom1"
Alors en B1 apparait la liste déroulante nommée "liste1" et qui correspond à la plage B2:B8 d'une autre feuille (disons Feuillle2)

Si A1:"nom2"
Alors en B1 apparait la liste déroulante nommée "liste2" et qui correspond à la plage C2:C9 de Feuille2

etc.

A1 peut prendre des dizaines de valeurs, j'ai donc aussi des dizaines de listes sur Feuille2

J'ai trouvé le code suivant pour insérer une liste:
<Cells(1,2).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=liste1"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = "Sélection"
.ErrorTitle = ""
End With>


Mais je n'arrive aps à remplacer "liste1" par une variable qui ferait référence à A1. Du coup, à moins de faire autant de IF..THEN que je n'ai de possibilité de valeurs en A1, ça ne m'aide pas beaucoup.

Quelqu'un aurait-il une solution?

Merci

1 réponse

  1. Contributeur
    Bonjour

    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="=INDIRECT($A$1)"
    0