VBA Introduire une liste déroulante selon une variable

Fermé
bb_ronaldo - 7 févr. 2014 à 16:23
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 7 févr. 2014 à 17:17
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



A voir également:

1 réponse

michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
7 févr. 2014 à 17:17
Bonjour

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