Comment créer une liste déroulante dans Excel facilement
Créez des listes déroulantes dynamiques et robustes dans Excel. Tutoriel pas à pas + formules DECALER/Tableau et macros VBA. Essayez maintenant.
Notre équipe de formation Excel & Experte VBA, avec 12 ans d'expérience, observe régulièrement l'impact des listes déroulantes sur la qualité des données. Les listes déroulantes réduisent les erreurs de saisie, améliorent la cohérence et accélèrent la saisie dans des environnements professionnels où la précision est cruciale.
Créer une liste déroulante dans Excel va au-delà d'une simple option d'interface : c'est un levier pour standardiser les entrées et faciliter l'analyse. Avec des versions récentes d'Excel (Office 365, Excel 2019/2021), vous pouvez combiner validations, plages nommées, tables et formules dynamiques pour obtenir des listes souples et maintenables.
Dans ce tutoriel, vous apprendrez les méthodes manuelles et automatisées (formules et VBA) pour créer des listes déroulantes robustes. Chaque section propose des conseils pratiques, des exemples concrets et des solutions de dépannage.
Introduction aux listes déroulantes dans Excel
Qu'est-ce qu'une liste déroulante ?
Les listes déroulantes sont des contrôles de validation des données qui proposent des options prédéfinies pour une cellule. Elles servent à normaliser les entrées (ex. : noms de produits, catégories, statuts) et à réduire les erreurs humaines lors de la saisie.
Elles se prêtent particulièrement aux tableaux de suivi, aux formulaires et aux rapports interactifs : en choisissant une valeur prédéfinie, les utilisateurs saisissent plus vite et les analyses se basent sur des données homogènes.
- Réduit les erreurs de saisie
- Améliore la cohérence des données
- Facilite la normalisation
- Permet des listes statiques ou dynamiques
| Utilité | Exemple | Impact |
|---|---|---|
| Réduction d'erreurs | Choix d'un produit | Moins de fautes de frappe |
| Cohérence des données | Sélection de catégories | Données homogènes |
| Facilité de mise à jour | Changement d'options | Rapidité des modifications |
Préparer vos données pour la liste déroulante
Organisation des données
Avant de créer une liste, centralisez les options dans une colonne dédiée (par exemple sur une feuille nommée "Référentiel" ou une section séparée). Cela facilite la maintenance et la réutilisation de la plage.
Nettoyez la colonne : supprimez les doublons (Données → Supprimer les doublons), évitez les cellules vides et vérifiez le format (texte, nombre). Utilisez un nom de plage pour référencer facilement cette liste depuis la validation des données ou depuis du VBA.
- Créer une colonne dédiée
- Éliminer les doublons
- Vérifier les valeurs vides
- Utiliser des noms de plage pour faciliter l'accès
Plutôt que d'insérer une liste directement dans la validation, préférez référencer une plage nommée : cela simplifie les mises à jour et permet d'utiliser des plages dynamiques.
| Élément | Action | Résultat |
|---|---|---|
| Colonne dédiée | Créer une nouvelle colonne | Options pour la liste |
| Doublons | Utiliser 'Supprimer les doublons' | Liste nettoyée |
| Valeurs vides | Vérifier chaque cellule | Données complètes |
Personnaliser votre liste déroulante
Options de personnalisation
Après création, personnalisez l'apparence et le comportement : mise en forme conditionnelle pour surligner certaines valeurs, définition d'une valeur par défaut (préremplir la cellule) ou verrouillage des cellules pour protéger la validation.
Le script VBA ci-dessous illustre une approche complète : il crée une validation de type Liste sur la cellule A1 en utilisant une plage nommée "Produits" (ou une liste littérale), active l'in-cell dropdown et applique une mise en forme visuelle pour attirer l'attention sur la cellule.
Sub CustomizeDropdown()
' Crée une validation liste sur A1 puis applique une mise en forme
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Feuille1")
With ws.Range("A1")
' Supprime l'ancienne validation si elle existe
On Error Resume Next
.Validation.Delete
On Error GoTo 0
' Ajoute une validation de type Liste en utilisant un nom de plage 'Produits'
' Assurez-vous d'avoir défini le nom 'Produits' dans le classeur (Formules → Gestionnaire de noms)
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Produits"
.Validation.IgnoreBlank = True
.Validation.InCellDropdown = True
' Mise en forme pour repérer la cellule contenant la liste
.Interior.Color = RGB(255, 223, 186)
.Font.Bold = True
.Borders.LineStyle = xlContinuous
End With
End Sub
Ce script supprime d'abord toute validation précédente, ajoute la validation de liste basée sur le nom de plage "Produits" et applique une mise en forme (fond et gras). Remplacez "Produits" par le nom de votre plage.
| Fonctionnalité | Description | Exemple |
|---|---|---|
| Style de cellule | Modifie l'apparence de la cellule | Changer la couleur de fond |
| Valeur par défaut | Préremplir la cellule pour guider l'utilisateur | France pour la liste des pays |
| Mise en forme conditionnelle | Met en surbrillance des cellules selon des critères | Surbrillance des ventes supérieures à 500€ |
Gérer les erreurs dans les listes déroulantes
Anticiper les erreurs
Anticipez les erreurs courantes : cellules vides, valeurs non autorisées, ou entrées manuelles si la validation autorise le texte libre. Paramétrez un message d'erreur clair (Données → Validation des données → Message d'erreur) pour guider l'utilisateur.
Vous pouvez aussi automatiser une vérification par macro qui alerte l'utilisateur si une cellule obligatoire reste vide.
Sub ValidateDropdown()
' Affiche un message si A1 est vide
If IsEmpty(Range("A1")) Then
MsgBox "Veuillez sélectionner une option dans A1.", vbExclamation, "Validation requise"
End If
End Sub
Cette macro montre une vérification simple. Pour des contrôles plus avancés, combinez la validation avec des formules (ex. NB.SI pour vérifier des doublons) ou des routines VBA qui corrigent automatiquement les données.
| Erreur | Solution | Exemple |
|---|---|---|
| Cellule vide | Afficher un message d'erreur | Alerte si A1 est vide |
| Saisie incorrecte | Limiter les valeurs à une liste | Valeurs doivent être numériques |
| Sélection multiple | Interdire plusieurs choix | Validation pour une seule sélection |
Applications pratiques des listes déroulantes
Exemples concrets d'utilisation :
- Formulaires de commande : sélection produit et quantités normalisées.
- Gestion de projet : statut tâche (À faire, En cours, Terminé).
- Tableaux de reporting : filtres rapides pour créer des vues dynamiques.
- Feuilles multi-utilisateurs : standardisation des réponses pour faciliter l'agrégation.
Macro VBA pour créer une liste déroulante simple dans A1 (Feuille1) :
Sub CreateDropdown()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Feuille1")
With ws.Range("A1")
.Validation.Delete
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Option1,Option2,Option3"
.Validation.IgnoreBlank = True
.Validation.InCellDropdown = True
End With
End Sub
Cette macro supprime d'abord toute validation existante, puis ajoute une liste composée de trois valeurs séparées par des virgules. Pour des listes plus longues ou dynamiques, préférez une plage nommée.
| Caractéristique | Description | Exemple |
|---|---|---|
| Validation des données | Assure que seules certaines entrées sont acceptées. | Limite les saisies à des choix prédéfinis. |
| Simplicité d'utilisation | Facilite la saisie pour les utilisateurs. | Permet de choisir rapidement parmi des options. |
| Cohérence | Maintient une uniformité dans les données saisies. | Réduit les variations dans les entrées. |
Listes dynamiques (DECALER / Tableau)
Deux méthodes courantes pour que la liste s'ajuste automatiquement lorsque vous ajoutez des éléments :
Méthode 1 — Plage dynamique avec DECALER (DECALER + NBVAL)
Créez un nom (Formules → Gestionnaire de noms) par exemple ProduitsDyn avec la formule suivante (supposons que vos données commencent en Feuille2!A2) :
=DECALER(Feuille2!$A$2;0;0;NBVAL(Feuille2!$A:$A)-1;1)
Ensuite, utilisez =ProduitsDyn comme Source dans la Validation des données. La plage s'agrandira automatiquement quand vous ajouterez un nouvel élément en colonne A.
Méthode 2 — Utiliser un Tableau Excel et un nom
Convertissez votre liste en Tableau (Insertion → Tableau). Donnez-lui un nom (ex. TblProduits) et en-tête de colonne "Nom". Créez ensuite un nom dans le Gestionnaire de noms, par exemple ProduitsTable, avec la référence :
=TblProduits[Nom]
Vous pouvez maintenant utiliser =ProduitsTable comme Source dans la Validation des données. Le tableau gère automatiquement les insertions/suppressions et le nom de plage référencera toujours la colonne.
Conseil : préférez la méthode Tableau si vous manipulez des lignes structurées (plus lisible et compatible avec les références structurées d'Excel).
Diagramme du processus
Vue synthétique du flux entre la source de données, la validation et la cellule cible :
Points Clés à Retenir
- Utilisez une plage nommée ou un Tableau pour rendre vos listes faciles à maintenir.
- Pour une liste dynamique, créez un nom avec DECALER/NBVAL ou convertissez la plage en Tableau.
- Protégez les cellules contenant la validation pour empêcher les modifications accidentelles.
- Combinez validation + VBA + mise en forme conditionnelle pour une expérience utilisateur robuste.
Questions Fréquentes
- Puis-je créer une liste déroulante avec des données d'une autre feuille dans Excel ?
- Oui. Nommez la plage sur l'autre feuille (Formules → Gestionnaire de noms) puis entrez =NomDePlage dans le champ Source de la Validation des données.
- Comment rendre ma liste déroulante dynamique en fonction d'autres sélections ?
- Utilisez la fonction INDIRECT couplée à des plages nommées dynamiques : la valeur sélectionnée dans la première liste peut servir à construire le nom de la plage de la seconde. Exemple : si la catégorie choisie est en B1 et que vous avez une plage nommée "Fruits" et "Légumes", la validation de la seconde cellule peut utiliser =INDIRECT(B1).
- Que faire si ma liste déroulante ne s'affiche pas correctement ?
- Vérifiez que la plage source n'inclut pas de cellules vides, que le type de validation est « Liste » et que la référence (nom de plage ou adresse) est correcte. Si la source est sur une autre feuille, utilisez un nom de plage.
- Puis-je limiter le nombre d'éléments sélectionnables dans ma liste déroulante ?
- Excel ne propose pas nativement une limite de "nombre de sélections" pour une cellule unique (la cellule accepte une seule valeur). Pour des contraintes avancées (p.ex. limiter le nombre de fois où une valeur peut être choisie dans un formulaire partagé), implémentez une validation personnalisée avec des formules ou du VBA qui comptent les occurrences (NB.SI) et empêchent la saisie si la limite est dépassée.
- Comment puis-je protéger mes listes déroulantes contre la modification des utilisateurs ?
- Verrouillez les cellules contenant la validation (Format de cellule → Verrouillée) puis protégez la feuille (Révision → Protéger la feuille). Fournissez un mot de passe si nécessaire pour empêcher toute modification.
Conclusion
Les listes déroulantes sont un outil majeur pour améliorer la qualité et la rapidité de la saisie dans Excel. En combinant plages nommées, formules dynamiques (DECALER / NBVAL) et Tableaux Excel, vous obtenez des listes adaptatives et faciles à administrer. Les macros VBA permettent d'automatiser la création et la maintenance des validations lorsque vous travaillez sur des classeurs complexes ou à usage multi-utilisateurs.
Commencez par structurer vos données, convertissez-les en Table si pertinent, nommez vos plages et testez la validation. Pour aller plus loin, automatisez avec des macros bien commentées et ajoutez des contrôles de validation afin d'assurer l'intégrité des données dans le temps.