Les listes déroulantes sont un moyen simple et puissant d’améliorer la qualité des saisies dans Excel. Elles limitent les erreurs, accélèrent la saisie et rendent les feuilles de calcul plus lisibles. Ce guide détaillé explique comment créer des listes déroulantes basiques, dynamiques et dépendantes, et présente des solutions pour des besoins avancés comme la sélection multiple ou l’autocomplétion. Les explications tiennent compte des différences entre versions modernes d’Excel et versions plus anciennes.
1. Création d’une liste déroulante simple
Étapes rapides pour une liste statique :
- Préparez vos éléments de liste dans une colonne sur une feuille dédiée, par exemple A2:A10.
- Sélectionnez la cellule où vous voulez la liste.
- Allez dans l’onglet Données puis Validation des données.
- Choisissez Liste comme critère et sélectionnez la plage contenant vos éléments.
- Cochez ou décochez l’option Autoriser les entrées en dehors de la liste selon vos besoins.
Avantage : mise en place rapide. Inconvénient : la plage ne s’actualise pas automatiquement si vous ajoutez de nouveaux éléments en dehors de la plage définie.
2. Utiliser une Table Excel pour une source qui s’actualise
Transformer la plage en Table rend la liste auto-actualisable :
- Sélectionnez la plage contenant les éléments et appuyez sur Ctrl+T pour créer une Table.
- Donnez un nom à la colonne ou à la Table via Outils de tableau > Propriétés ou via le Gestionnaire de noms.
- Dans Validation des données, utilisez la référence structurée de la Table comme source, par exemple =Table1[Liste].
Chaque ajout à la Table est automatiquement pris en compte dans la liste déroulante. Cette méthode est recommandée pour des listes en constante évolution et pour des fichiers partagés.
3. Listes dynamiques avec formules
Si vous disposez d’Excel 365 ou d’une version comportant les fonctions dynamiques, utilisez UNIQUE et FILTER pour créer une source qui élimine les doublons et trie ou filtre en temps réel :
- UNIQUE(plage) retourne une liste sans doublon.
- FILTER(plage; condition) permet de n’afficher que les éléments répondant à une condition.
- Combiner SORT(UNIQUE(plage)) pour trier la liste automatiquement.
Sur des versions plus anciennes, utilisez OFFSET ou une plage nommée dynamique avec la fonction DECALER pour définir une plage qui s’adapte à la taille des données. Exemple de nom défini utilisant une formule : =DECALER(Feuil1!$A$2;0;0;NBVAL(Feuil1!$A:$A)-1;1)
4. Listes déroulantes dépendantes
Les listes dépendantes changent leurs options selon la sélection d’une autre liste. Méthode classique :
- Créez une liste principale (par ex. Catégories).
- Créez une plage distincte pour chaque catégorie contenant ses sous-éléments et nommez chaque plage exactement comme le libellé de la catégorie. Par exemple, si la catégorie est Fruits, nommez la plage Fruits.
- Dans la cellule de la liste secondaire, utilisez Validation des données et comme source écrivez =INDIRECT(CelluleAvecCategorie).
Remarque : INDIRECT fonctionne bien sur desktop mais peut poser problème en ligne ou avec des noms contenant des espaces. Dans ce cas, utilisez des noms de plage sans espaces ou employez des formules plus modernes basées sur FILTER si disponibles.
5. Sélection multiple : solutions sans et avec VBA
Excel ne gère pas nativement la sélection multiple dans une cellule via une liste déroulante. Deux approches :
Sans VBA
On peut simuler la sélection multiple en utilisant plusieurs colonnes ou cellules et ensuite concaténer les valeurs via une formule. C’est simple mais moins ergonomique.
Avec VBA
Sur Excel desktop, un petit script en VBA permet d’ajouter ou retirer des éléments lorsqu’un utilisateur choisit dans la liste. Exemple minimal à placer dans le module de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Cellule As Range If Intersect(Target, Range("B2:B20")) Is Nothing Then Exit Sub Application.EnableEvents = False For Each Cellule In Intersect(Target, Range("B2:B20")) If Cellule.Validation.Type = 3 Then If InStr(1, Cellule.Value, ";") = 0 Then ' Premier élément choisi End If ' Exemple simple : ajouter la valeur choisie à la fin en séparant par ; si non déjà présent Dim ancienne As String ancienne = Cellule.Value ' logiques d'ajout/suppression à personnaliser End If Next Cellule Application.EnableEvents = TrueEnd Sub
Ce code est un point de départ et demande d’être adapté pour gérer les cas d’usage, suppression d’éléments et espaces. Sauvegardez toujours avant de tester des macros.
6. Autocomplétion et ergonomie
Excel propose l’autocomplétion dans les plages saisies directement mais pas directement dans la liste déroulante avant la sélection. Pour améliorer l’ergonomie :
- Utilisez des listes triées pour accélérer la recherche visuelle.
- Combinez la validation de données avec le filtrage dynamique sur une zone déroulante simulée (contrôle ActiveX ou formulaire), si vous souhaitez une recherche instantanée.
- Ajoutez une info-bulle via Commentaire ou Validation des données pour guider l’utilisateur.
7. Bonnes pratiques et dépannage
Quelques conseils pour éviter les erreurs courantes :
- Placez les sources de listes sur une feuille dédiée et protégez-la pour éviter les modifications accidentelles.
- Nommez vos plages de manière cohérente et sans espaces, surtout si vous utilisez INDIRECT.
- Testez votre configuration sur une copie du fichier avant déploiement.
- Si une liste ne s’affiche pas, vérifiez que la cellule n’est pas formatée en texte et que la validation des données pointe vers la bonne plage.
- Pour des fichiers partagés ou en ligne, privilégiez les Tables ou les fonctions compatibles avec Excel Online.
Les listes déroulantes vont du très simple au très sophistiqué. Pour la plupart des usages, une Table nommée offre un excellent compromis entre simplicité et maintenance. Pour des besoins avancés, les fonctions dynamiques modernes facilitent la création de listes automatiques et filtrées. Enfin, pour la sélection multiple ou des comportements personnalisés, le VBA reste la solution la plus flexible sur desktop. Adaptez la méthode à votre version d’Excel, testez sur une copie et documentez la feuille pour les utilisateurs.