[Excel Liste déroulante VBA

Résolu/Fermé
Triton circus Messages postés 409 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 11 novembre 2017 - 19 juin 2012 à 16:17
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 29 nov. 2014 à 16:10
Bonjour,

J'aimerai savoir comment faire pour créer une liste déroulante à partir de valeurs présentes dans une même feuille en VBA.
Je sais la créer à partir de "données> validation> liste" mais j'aimerai pouvoir la créer directement à l'aide d'une macro.

En fait dans mon programme, l'utilisateur est invité a saisir des données concernant des produits et après une vérification le programme indique quels sont les champs erronés (ils sont comparés avec une base de données située sur la même feuille).
Et ce que je souhaite c'est qu'après cette vérification, les cellules des champs erronés dispose d'une liste déroulante proposant à l'utilisateur de choisir parmi les choix de la base de donnée.

Ex : Je demande tout d'abord la marque du téléphone de l'utilisateur. Son choix est libre dans un premier temps. Si il rentre "dsijf" cette marque n'étant pas répertoriée, le champ correspondant est affiché en rouge et j'aimerai pouvoir mettre une liste déroulante dans ce champ afin qu'il est le choix entre les marques répertoriée plus bas dans la feuille.


J'espère ne pas avoir été trop confus :P

Merci d'avance.

ps: je suis sous Excel 2003


5 réponses

Christof422 Messages postés 871 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 8 février 2015 212
20 juin 2012 à 09:02
'Sélection de la case qui doit contenir la liste
Cells(1, 5).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$A$1:$A$8"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "Sélection"
        .ErrorTitle = ""
        .InputMessage = "Choisissez une valeur"
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
9