Créer des listes déroulantes, Excel VBA
Voici un code VBA détaillé pour créer une liste déroulante dans Excel, avec une explication complète en français.
Code VBA pour créer une liste déroulante dans Excel
Ce code permet de :
- Définir une plage de cellules contenant les options de la liste déroulante.
- Remplir cette plage avec des valeurs prédéfinies.
- Appliquer une validation des données pour créer la liste déroulante dans une cellule cible.
Sub CreerListeDeroulante() Dim ws As Worksheet Dim rng As Range Dim celluleCible As Range Dim plageListe As Range ' Définir la feuille de travail Set ws = ThisWorkbook.Sheets("Feuil1") ' Remplacez "Feuil1" par le nom de votre feuille ' Définir la plage contenant les options de la liste déroulante Set rng = ws.Range("A1:A5") ' Remplir la plage avec les options rng.Value = WorksheetFunction.Transpose(Array("Option 1", "Option 2", "Option 3", "Option 4", "Option 5")) ' Définir la cellule cible où la liste déroulante sera appliquée Set celluleCible = ws.Range("C1") ' Appliquer la validation des données pour créer la liste déroulante With celluleCible.Validation ' Supprimer toute validation existante .Delete ' Ajouter la validation avec une liste .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=" & rng.Address ' Optionnel : afficher un message d'entrée lors de la sélection de la cellule .InputTitle = "Sélectionnez une option" .InputMessage = "Choisissez une valeur dans la liste déroulante." ' Optionnel : personnaliser le message d'erreur .ErrorTitle = "Sélection invalide" .ErrorMessage = "Veuillez sélectionner une option valide dans la liste déroulante." .ShowInput = True .ShowError = True End With ' Afficher une notification pour l'utilisateur MsgBox "Liste déroulante créée dans la cellule " & celluleCible.Address, vbInformation, "Succès" End Sub
Explication
1. Définition de la feuille et des plages
- Le script fonctionne sur Feuil1, mais vous pouvez modifier ce nom en fonction de votre fichier Excel.
- rng (A1:A5) contient les valeurs de la liste déroulante.
- celluleCible (C1) est la cellule où la liste déroulante sera insérée.
2. Remplissage de la liste déroulante
- rng.Value = WorksheetFunction.Transpose(Array(…)) remplit la plage de cellules avec les options.
3. Application de la validation des données
- .Delete supprime toute validation existante pour éviter les conflits.
- .Add Type:=xlValidateList crée une liste déroulante.
- Formula1:= »= » & rng.Address lie la liste déroulante à la plage définie.
- .InputTitle et .InputMessage affichent un message d’aide lors de la sélection de la cellule.
- .ErrorTitle et .ErrorMessage affichent un message d’erreur personnalisé en cas de saisie incorrecte.
4. Notification à l’utilisateur
- MsgBox affiche un message confirmant que la liste déroulante a bien été créée.
Avec ce code, vous pourrez automatiser la création de listes déroulantes dans vos projets Excel VBA.