Comment créer une liste déroulante dépendante (en cascade) dans Excel ?

  • Partage Ça
Michael Brown

Il y a quelque temps, nous avons commencé à explorer les possibilités de la validation des données Excel et nous avons appris à créer une liste déroulante simple dans Excel, basée sur une liste séparée par des virgules, une plage de cellules ou une plage nommée.

Aujourd'hui, nous allons étudier cette fonctionnalité en profondeur et apprendre à créer des listes déroulantes en cascade qui affichent des choix en fonction de la valeur sélectionnée dans la première liste déroulante. En d'autres termes, nous allons créer une liste de validation de données Excel basée sur la valeur d'une autre liste.

    Comment créer une liste déroulante dépendante multiple dans Excel

    Il est facile de créer des listes déroulantes dépendantes à plusieurs niveaux dans Excel. Tout ce dont vous avez besoin est de quelques plages nommées et de la formule INDIRECT. Cette méthode fonctionne avec toutes les versions d'Excel 365 - 2010 et antérieures.

    1. tapez les entrées pour les listes déroulantes

    Tout d'abord, tapez les entrées que vous voulez voir apparaître dans les listes déroulantes, chaque liste dans une colonne distincte. Par exemple, je crée une liste déroulante en cascade d'exportateurs de fruits et la colonne A de ma feuille source ( Fruits ) comprend les éléments de la première liste déroulante et 3 autres colonnes énumèrent les éléments des listes déroulantes dépendantes.

    2. créer des plages nommées

    Vous devez maintenant créer des noms pour votre liste principale et pour chacune des listes dépendantes, soit en ajoutant un nouveau nom dans le champ Nom du responsable fenêtre ( Formules tab> ; Nom Manager> ; Nouveau) ou en tapant le nom directement dans le Boîte à noms .

    Remarque : si votre première ligne est une sorte d'en-tête de colonne, comme dans la capture d'écran ci-dessus, vous ne devez pas l'inclure dans la plage nommée.

    Pour obtenir des instructions détaillées étape par étape, veuillez consulter la section Comment définir un nom dans Excel.

    Des choses à retenir :

    1. Les éléments devant apparaître dans la première liste déroulante doivent être des entrées d'un seul mot, par exemple Abricot , Mangue , Oranges Si vous avez des éléments composés de deux, trois ou plusieurs mots, veuillez consulter la rubrique Comment créer une liste déroulante en cascade avec des entrées de plusieurs mots.
    2. Le nom des listes dépendantes doit être exactement le même que celui de l'entrée correspondante dans la liste principale. Par exemple, la liste dépendante qui doit être affichée lorsque l'entrée " Mangue " est sélectionné dans la première liste déroulante doit être nommé Mangue .

    Une fois que vous avez terminé, vous pouvez appuyer sur Ctrl+F3 pour ouvrir l'interface de l'entreprise. Nom du responsable et vérifiez si toutes les listes comportent des noms et des références corrects.

    3. faire la première liste déroulante (principale)

    1. Dans la même feuille de calcul ou dans une autre, sélectionnez une ou plusieurs cellules dans lesquelles vous souhaitez faire apparaître votre liste déroulante principale.
    2. Allez à la Données cliquez sur Validation des données et configurer une liste déroulante basée sur une plage nommée de la manière habituelle en sélectionnant Liste sous Autoriser et en entrant le nom de la plage dans le champ Source : boîte.

    Pour les étapes détaillées, veuillez consulter la rubrique Créer une liste déroulante basée sur une plage nommée.

    En conséquence, vous aurez un menu déroulant dans votre feuille de calcul semblable à celui-ci :

    4. créer la liste déroulante dépendante

    Sélectionnez une ou plusieurs cellules pour votre menu déroulant dépendant et appliquez à nouveau la validation des données Excel comme décrit à l'étape précédente. Mais cette fois, au lieu du nom de la plage, vous saisissez la formule suivante dans le champ Source : champ :

    =INDIRECT(A2)

    Où A2 est la cellule contenant votre première liste déroulante (primaire).

    Si la cellule A2 est actuellement vide, vous obtiendrez le message d'erreur " La source est actuellement évaluée à une erreur. Voulez-vous continuer ? "

    Cliquez en toute sécurité Oui et dès que vous sélectionnez un élément dans le premier menu déroulant, vous verrez les entrées qui lui correspondent dans la deuxième liste déroulante, dépendante.

    5) Ajouter une troisième liste déroulante dépendante (facultatif)

    Si nécessaire, vous pouvez ajouter une troisième liste déroulante en cascade qui dépend soit de la sélection dans le deuxième menu déroulant, soit des sélections dans les deux premiers menus déroulants.

    Configurer une 3ème liste déroulante qui dépend de la 2ème liste

    Vous pouvez réaliser la liste déroulante de ce type de la même manière que nous venons de réaliser un deuxième menu déroulant dépendant. Rappelez-vous simplement les 2 choses importantes discutées ci-dessus, qui sont essentielles pour le bon fonctionnement de vos listes déroulantes en cascade.

    Par exemple, si vous voulez afficher une liste de régions dans la colonne C en fonction du pays sélectionné dans la colonne B, vous créez une liste de régions pour chaque pays et vous la nommez d'après le nom du pays, exactement comme le pays apparaît dans les deuxièmes listes déroulantes. Par exemple, une liste de régions indiennes doit être nommée "Inde", une liste de régions chinoises - "Chine", et ainsi de suite.

    Ensuite, vous sélectionnez une cellule pour le troisième menu déroulant (C2 dans notre cas) et appliquez la validation de données Excel avec la formule suivante (B2 est la cellule avec le deuxième menu déroulant qui contient une liste de pays) :

    =INDIRECT(B2)

    Maintenant, chaque fois que vous sélectionnez Inde sous la liste des pays de la colonne B, vous aurez les choix suivants dans la troisième liste déroulante :

    Remarque : la liste des régions affichée est unique pour chaque pays, mais elle ne dépend pas de la sélection effectuée dans la première liste déroulante.

    Créer une troisième liste déroulante dépendant des deux premières listes

    Si vous devez créer un menu déroulant en cascade qui dépend des sélections effectuées dans la première et la deuxième liste déroulante, procédez de cette manière :

    1. Créez des ensembles supplémentaires de plages nommées, et nommez-les pour les combinaisons de mots dans vos deux premières listes déroulantes. Par exemple, vous avez Mangue, oranges, etc. dans la 1ère liste et Inde, Brésil, etc. dans le 2ème. Ensuite, vous créez des plages nommées MangueInde , MangoBrazil , OrangesInde , OrangesBrésil Ces noms ne doivent pas contenir de caractères de soulignement ou d'autres caractères supplémentaires.

  • Appliquez la validation des données Excel avec la formule SUBSTITUTE INDIRECTE qui concatène les noms des entrées dans les deux premières colonnes et supprime les espaces des noms. Par exemple, dans la cellule C2, la formule de validation des données serait la suivante :
  • =INDIRECT(SUBSTITUTE(A2&B2, " ",""))

    Où A2 et B2 contiennent respectivement la première et la deuxième liste déroulante.

    En conséquence, votre 3e liste déroulante affichera les régions correspondant aux Fruits et Pays sélectionné dans les 2 premières listes déroulantes.

    Il s'agit de la méthode la plus simple pour créer des listes déroulantes en cascade dans Excel, mais elle présente un certain nombre de limites.

    Limites de cette approche :

    1. Les éléments de votre liste déroulante principale doivent être des entrées d'un seul mot. Voir comment créer des listes déroulantes en cascade avec des entrées de plusieurs mots.
    2. Cette méthode ne fonctionnera pas si les entrées de votre liste déroulante principale contiennent des caractères non autorisés dans les noms de plage, tels que le tiret (-), l'esperluette (& ;), etc. La solution consiste à créer une liste déroulante dynamique en cascade qui ne présente pas cette restriction.
    3. Les menus déroulants créés de cette manière ne sont pas mis à jour automatiquement, c'est-à-dire que vous devrez modifier les références des plages nommées chaque fois que vous ajoutez ou supprimez des éléments dans les listes sources. Pour surmonter cette limitation, essayez de créer une liste déroulante dynamique en cascade.

    Créer des listes déroulantes en cascade avec des entrées de plusieurs mots

    Les formules INDIRECT que nous avons utilisées dans l'exemple ci-dessus ne peuvent traiter que des éléments d'un seul mot. Par exemple, la formule =INDIRECT(A2) fait indirectement référence à la cellule A2 et affiche la plage nommée avec exactement le même nom que celui de la cellule référencée. Cependant, les espaces ne sont pas autorisés dans les noms Excel, c'est pourquoi cette formule ne fonctionnera pas avec des noms de plusieurs mots.

    La solution consiste à utiliser la fonction INDIRECT en combinaison avec SUBSTITUTE comme nous l'avons fait lors de la création d'une troisième liste déroulante.

    Supposons que vous ayez Melon d'eau Dans ce cas, vous nommez une liste d'exportateurs de pastèques en un seul mot sans espace. Pastèque .

    Ensuite, pour la deuxième liste déroulante, appliquez la validation des données Excel avec la formule suivante qui supprime les espaces du nom dans la cellule A2 :

    =INDIRECT(SUBSTITUT(A2, " ",""))

    Comment empêcher les changements dans la liste déroulante primaire ?

    Imaginez le scénario suivant : votre utilisateur a effectué les sélections dans toutes les listes déroulantes, puis il a changé d'avis, est retourné à la première liste et a choisi un autre élément. En conséquence, la première et la deuxième sélection ne correspondent pas. Pour éviter que cela ne se produise, vous pouvez bloquer toute modification dans la première liste déroulante dès qu'une sélection est effectuée dans la deuxième liste.

    Pour ce faire, lorsque vous créez le premier menu déroulant, utilisez une formule spéciale qui vérifiera si une entrée est sélectionnée dans le deuxième menu déroulant :

    =IF(B2="", Fruit, INDIRECT("FakeList"))

    Où B2 contient la deuxième liste déroulante, " Fruits "est le nom de la liste qui apparaît dans le premier menu déroulant, et " FakeList " est un faux nom qui n'existe pas.

    Désormais, si un élément est sélectionné dans la deuxième liste déroulante, aucun choix ne sera disponible lorsque l'utilisateur cliquera sur la flèche située à côté de la première liste.

    Création de listes déroulantes dynamiques en cascade dans Excel

    Le principal avantage d'une liste déroulante dynamique dépendante d'Excel est que vous êtes libre de modifier les listes sources et que vos listes déroulantes seront mises à jour à la volée. Bien sûr, la création de listes déroulantes dynamiques demande un peu plus de temps et des formules plus complexes, mais je pense que c'est un investissement rentable car, une fois mis en place, de tels menus déroulants sont un véritable plaisir à travailler.

    Comme pour presque tout ce qui se passe dans Excel, vous pouvez obtenir le même résultat de plusieurs façons. Vous pouvez notamment créer une liste déroulante dynamique en utilisant une combinaison de fonctions OFFSET, INDIRECT et COUNTA ou une formule INDEX MATCH plus résistante. Cette dernière est ma méthode préférée car elle offre de nombreux avantages, dont les plus essentiels :

    1. Vous devez créer 3 plages nommées uniquement, quel que soit le nombre d'éléments dans les listes principale et dépendante.
    2. Vos listes peuvent contenir des éléments de plusieurs mots et des caractères spéciaux.
    3. Le nombre d'entrées peut varier dans chaque colonne.
    4. L'ordre de tri des entrées n'a pas d'importance.
    5. Enfin, il est très facile de maintenir et de modifier les listes de sources.

    Bon, assez de théorie, passons à la pratique.

    1. organisez vos données sources dans un tableau

    Comme d'habitude, la première chose à faire est de noter tous les choix de vos listes déroulantes dans une feuille de calcul. Cette fois, vous devrez stocker les données sources dans un tableau Excel. Pour cela, une fois que vous avez saisi les données, sélectionnez toutes les entrées et appuyez sur Ctrl + T ou cliquez sur Insérer tab> ; Tableau Ensuite, tapez le nom de votre table dans le champ de saisie. Nom de la table boîte.

    L'approche la plus pratique et la plus visuelle consiste à stocker les éléments de la première liste déroulante en tant qu'en-têtes de table, et les éléments de la liste déroulante dépendante en tant que données de table. La capture d'écran ci-dessous illustre la structure de ma table, nommée exportateurs_tbl - les noms des fruits sont des en-têtes de tableau et une liste des pays exportateurs est ajoutée sous le nom du fruit correspondant.

    2. créer des noms Excel

    Maintenant que vos données sources sont prêtes, il est temps de mettre en place des références nommées qui récupéreront dynamiquement la liste correcte de votre table.

    2.1 Ajouter un nom pour la ligne d'en-tête du tableau (liste déroulante principale)

    Pour créer un nouveau nom qui fait référence à l'en-tête du tableau, sélectionnez-le et cliquez ensuite sur Formules > ; Nom du responsable > ; Nouveau ou appuyez sur Ctrl + F3 .

    Microsoft Excel utilisera le système de référence de la table intégrée pour créer le nom de l'objet de l'enquête. nom_table [#En-têtes] modèle.

    Donnez-lui un nom significatif et facile à retenir, par ex. liste de fruits et cliquez sur OK .

    2.2 Créer un nom pour la cellule contenant la première liste déroulante

    Je sais que vous n'avez pas encore de liste déroulante :) Mais vous devez choisir la cellule qui accueillera votre première liste déroulante et créer un nom pour cette cellule maintenant car vous devrez inclure ce nom dans la référence du troisième nom.

    Par exemple, ma première zone de liste déroulante se trouve dans la cellule B1 de la feuille 2. Je lui donne donc un nom, quelque chose de simple et d'explicite comme suit fruit :

    Conseil : utilisez les références de cellule appropriées pour copier les listes déroulantes à travers la feuille de travail.

    Lisez attentivement les paragraphes suivants, car il s'agit d'un conseil très utile que vous ne voulez pas manquer. Merci beaucoup à Karen pour l'avoir publié !

    Si vous prévoyez de copier vos listes déroulantes dans d'autres cellules, utilisez des références de cellules mixtes lorsque vous créez le nom de la ou des cellules contenant votre première liste déroulante.

    Pour que les listes déroulantes soient copiées correctement sur d'autres sites de l'Union européenne, il faut que l'on puisse les utiliser. colonnes (c'est-à-dire vers la droite), utilisez des références relatives de colonne (sans le signe $) et absolues de ligne (avec $) comme = Sheet2!B$1.

    En conséquence, la liste déroulante dépendante de B1 apparaîtra dans la cellule B2 ; la liste déroulante dépendante de C1 s'affichera dans C2, et ainsi de suite.

    Et si vous prévoyez de copier les listes déroulantes vers d'autres rangées (c'est-à-dire vers le bas de la colonne), utilisez alors des coordonnées absolues de colonne (avec $) et des coordonnées relatives de ligne (sans $) comme = Sheet2!$B1.

    Pour copier une cellule de liste déroulante dans n'importe quelle direction, utilisez une référence relative (sans le signe $) comme = Sheet2!B1.

    2.3 Créer un nom pour récupérer les entrées du menu dépendant

    Au lieu de définir des noms uniques pour chacune des listes dépendantes comme nous l'avons fait dans l'exemple précédent, nous allons créer un seul nom formule nommée qui n'est pas affectée à une cellule particulière ou à une plage de cellules. Elle récupère la liste correcte d'entrées pour la deuxième liste déroulante en fonction de la sélection effectuée dans la première liste déroulante. Le principal avantage de cette formule est que vous n'aurez pas à créer de nouveaux noms à mesure que vous ajoutez de nouvelles entrées à la première liste déroulante - une seule formule nommée les couvre toutes.

    Vous créez un nouveau nom Excel avec cette formule :

    =INDEX(exportateurs_tbl,,MATCH(fruit,liste_fruit,0))

    Où :

    • exportateurs_tbl - le nom de la table (créée à l'étape 1) ;
    • fruit - le nom de la cellule contenant la première liste déroulante (créée à l'étape 2.2) ;
    • liste des fruits - le nom faisant référence à la ligne d'en-tête de la table (créée à l'étape 2.1).

    Je lui ai donné un nom liste des exportateurs comme vous le voyez dans la capture d'écran ci-dessous.

    Avant de passer à la dernière étape, il peut être utile d'ouvrir le gestionnaire de noms (Ctrl + F3) et de vérifier les noms et les références :

    3. configurer la validation des données Excel

    C'est en fait la partie la plus facile. Une fois les deux formules nommées en place, vous configurez la validation des données de la manière habituelle ( Données tab> ; Validation des données ).

    • Pour la première liste déroulante, dans la case Source, entrez =Liste de fruits (le nom créé à l'étape 2.1).
    • Pour la liste déroulante dépendante, entrez =Liste des exportateurs (le nom créé à l'étape 2.3).

    Votre menu déroulant dynamique en cascade est terminé et se met à jour automatiquement en fonction des modifications apportées à la table source.

    Cette liste déroulante Excel dynamique, parfaite à tous les autres égards, a un défaut : si les colonnes de votre tableau source contiennent un nombre différent d'éléments, les lignes vides apparaîtront dans votre menu comme ceci :

    Exclure les lignes vides de la liste déroulante dynamique en cascade

    Si vous voulez nettoyer les lignes vides de vos listes déroulantes, vous devrez faire un pas de plus et améliorer la formule INDEX / MATCH utilisée pour créer la liste déroulante dynamique dépendante.

    L'idée est d'utiliser 2 fonctions INDEX, où la première obtient la cellule supérieure gauche et la seconde renvoie la cellule inférieure droite de la plage, ou la fonction OFFSET avec INDEX et COUNTA imbriqués. Les étapes détaillées suivent ci-dessous :

    1. créer deux noms supplémentaires

    Pour ne pas rendre la formule trop volumineuse, créez d'abord quelques noms d'aide avec les formules simples suivantes :

    • Un nom appelé col_num pour faire référence au numéro de colonne sélectionné :

      =MATCH(fruit,liste_fruit,0)

    • Un nom appelé total_col pour faire référence à la colonne sélectionnée (pas le numéro de la colonne, mais la colonne entière) :

      =INDEX(exportateurs_tbl,,col_num)

    Dans les formules ci-dessus, exportateurs_tbl est le nom de votre table source, fruit est le nom de la cellule contenant la première liste déroulante, et liste des fruits est le nom faisant référence à la ligne d'en-tête de la table.

    2. créer la référence nommée pour la liste déroulante dépendante.

    Ensuite, utilisez l'une des formules ci-dessous pour créer un nouveau nom (appelons-le exportateurs_liste2 ) à utiliser avec la liste déroulante dépendante :

    =INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(entire_col), col_num)

    =OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(entire_col))

    3. appliquer la validation des données

    Enfin, sélectionnez la cellule contenant la liste déroulante dépendante et appliquez la validation des données en saisissant =. exportateurs_list2 (le nom créé à l'étape précédente) dans l'onglet Source : boîte.

    La capture d'écran ci-dessous montre le menu déroulant dynamique résultant dans Excel où toutes les lignes vides ont disparu !

    Remarque : Lorsque vous travaillez avec des listes déroulantes dynamiques en cascade créées à l'aide des formules ci-dessus, rien n'empêche l'utilisateur de modifier la valeur dans la première liste déroulante après avoir effectué la sélection dans la deuxième, ce qui fait que les choix dans les listes déroulantes primaire et secondaire peuvent ne pas correspondre. Vous pouvez bloquer les modifications dans la première boîte après qu'une sélection a été effectuée dans la deuxième en utilisant VBA oules formules complexes proposées dans ce tutoriel.

    C'est ainsi que vous créez une liste de validation de données Excel basée sur les valeurs d'une autre liste. N'hésitez pas à télécharger nos exemples de classeurs pour voir les listes déroulantes en cascade en action. Merci de votre lecture !

    Cahier d'exercices à télécharger

    Cascading Dropdown Sample 1- version facile

    Cascading Dropdown Sample 2 - version avancée sans les blancs

    Michael Brown est un passionné de technologie passionné par la simplification de processus complexes à l'aide d'outils logiciels. Avec plus d'une décennie d'expérience dans l'industrie de la technologie, il a perfectionné ses compétences dans Microsoft Excel et Outlook, ainsi que dans Google Sheets et Docs. Le blog de Michael est dédié au partage de ses connaissances et de son expertise avec les autres, en fournissant des conseils et des tutoriels faciles à suivre pour améliorer la productivité et l'efficacité. Que vous soyez un professionnel chevronné ou un débutant, le blog de Michael offre des informations précieuses et des conseils pratiques pour tirer le meilleur parti de ces outils logiciels essentiels.