Créer une liste déroulante VBA

Bonjour tout le monde,

Je cherche à créer une liste déroulante avec vba mais sans utiliser ActiveX ou Userform.

En d'autres termes je voudrais créer cela : (Voir photo ci-jointe) avec vba.

24photo.pdf (81.95 Ko)

C'est un problème assez simple mais après de nombreuses recherches je n'ai trouvé sur Internet qui puisse m'aider. Est-il même possible de faire cela ?

Je vous remercie par avance pour votre aide ! :)

Bonjour

Tu peux insérer une liste de type contrôle de formulaire et lui associer une macro

Salut d'abord créer un Champ nommé sur une colonne d'un tableau structuré par exemple, ou une plage.

ThisWorkbook.Names.Add Name:="vr_City", RefersToR1C1:="=Tableau1[City]" ' // Pour un TS
ThisWorkbook.Names.Add Name:="vr_City", RefersToR1C1:="=DECALER(Feuil3!$B1;;;NBVAL(Feuil3!$B:$B)-1;1)" ' // Pour une plage normale avec entête de colonne.

Ensuite tu crée ta zone de liste dans la cellule de ton choix

'ThisWorkbook.Names.Add Name:="vr_City", RefersToR1C1:="=Tableau1[City]" ' // pour un TS
'ThisWorkbook.Names.Add Name:="vr_City", RefersToR1C1:="=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1;1)" ' // pour valeur sur une colonne avec  entêtes

   Dim rng As Range
   ' // Idem pour définir la plage des zone de liste
   Set rng = Feuil2.Range("J2:J15") ' // A adapter ou trouver la dernierre ligne
   'Set rng = Range("Tableau1[City]") ' // Si tableau structuré
   'Set rng = Range("vr_City") ' Si Champ Nommé avec un valeur du style Autoriser:=Liste, Données:= =DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1;1)

    With rng.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=vr_City"
        .IgnoreBlank = True
        .InCellDropdown = True
    End With

Je pense ne pas m'être trompé.

Rechercher des sujets similaires à "creer liste deroulante vba"