Comment créer des menus déroulants en cascade dans Excel. C'est très simple surtout si vous travaillez avec Excel 365 😉
Tableau avec des données hiérarchisées
Nous allons partir d'un tableau où les données sont rangées de façon hiérarchisées des données comme les Catégories et les Sous-Catégories.
Nous allons utiliser ces informations pour construire 2 menus déroulants dépendants l'un par rapport à l'autre.
Par exemple, dans l'image suivante, seules les sous-catégories en relation avec les Boissons s'affiche dans le menu déroulant 😮👍
Étape 1 : Création du premier menu déroulant
- Le premier menu, correspond à colonne des Catégories
- Nous allons utiliser la fonction UNIQUE pour extraire chaque valeur de la colonne sans doublon.
=UNIQUE($A$2:$A$57)
Ensuite, nous allons créer un menu déroulant en activant le menu Données > Validation de données.
- Sélectionnez l'option Liste
- Écrivez simplement la première cellule ( E2 )
- Ajouter le symbole # pour indiquer que nous allons récupérer toutes les cellules renvoyées par la fonction UNIQUE
Voilà, notre premier menu
Étape 2 : Créer le menu déroulant dépendant
Maintenant, nous allons construire une nouvelle formule dans une seconde colonne. Cette fois-ci, nous allons utiliser la fonction FILTRE qui va utiliser pour voir utiliser le résultat du premier menu déroulant.
Pour écrire la formule, nous allons
- Indiquer la colonne qui contient les données à retourner
- Indiquer la colonne sur laquelle effectuer le filtrage
- le test à réaliser (ici =)
- la cellule contenant la valeur du test (ici la cellule I3)
=FILTRE(B2:B56;A2:A56=I3;"")
Bien sur, nous n'avons besoin de ne conserver que les valeurs uniques. Et de nouveau, nous allons utiliser la fonction UNIQUE. Et pour rendre les choses parfaites, on peut aussi trier les données dynamiquement
=TRIER(UNIQUE(FILTRE(B2:B56;A2:A56=I3;"")))
Et comme nous l'avons fait pour le premier menu déroulant, nous allons de nouveau nous servir des références propagées pour concevoir le second menu déroulant avec le résultat de la seconde formule. Et avec cette nouvelle fonction, nous avons créé un menu déroulant dépendant du premier résultat
Fred
28/03/2023 @ 14:28
J'ai suivi comme expliqué mais j'ai eu un message d'erreur, est-il possible d'avoir cette manoeuvre en video svp?
Alice
02/02/2023 @ 10:25
Bonjour,
Comment pouvons faire pour que le second filtre se mette automatiquement à jour quand on modifie le premier filtre ?
Il reste sur la dernière valeur quand on change le premier filtre (correspond donc à une catégorie dans votre exemple)
Merci
Frédéric LE GUEN
02/02/2023 @ 13:10
Si je comprends bien, seul l'affichage n'est pas à jour car quand vous cliquez sur le menu déroulant, les données qui s'affichent sont bien en relation avec le menu déroulant primaire.
Oui, c'est un inconvénient d'Excel qui ne gère pas le rafraichissement des données dynamiquement (ce n'est pas une page web). Une solution serait de faire une macro qui prend en charge les événements.
De rossi
20/07/2022 @ 10:36
Bonjour je voulais savoir si l’on pouvais faire la même chose en utilisant une autre feuilles et en voulant récupérer les données de la première liste?
Passez une bonne journe
Frédéric LE GUEN
22/07/2022 @ 21:53
Heuuuuuu, il faut voir le contexte. Comme ça, je ne peux pas répondre
Bibou
03/12/2020 @ 11:55
Bonjour,
Merci beaucoup pour ces explications très détaillée.
Petite concernant concernant le résultat de la formule Filtre, peut-on afficher le résultat sur une seule ligne plutôt qu'en colonne?
J'ai besoin de dupliquer la formule sur plusieurs lignes et du coup l'affichage du résultat de la fonction Filtre étant en colonne, je me retrouve bloqué dès que le résultat comporte plusieurs résultats.
Merci par avance de votre aide
Jérôme
Frédéric LE GUEN
03/12/2020 @ 12:36
Il faut utiliser la fonction TRANSPOSE pour inverser le résultat. =TRANSPOSE(FILTRE ...))
Marina
19/01/2021 @ 20:23
Bonjour, merci pour vos explications très claires.
Une petite question sur laquelle je bloque: est-il possible de construire une fonction filtre applicable sur plusieurs cellules de selection.
Pour être plus explicite: dans votre exemple, votre condition2 est toujours basée sur la valeur en I3. J'aimerais pouvoir utiliser le même filtre sur I4, I5 etc. J'ai un tableau à 150 lignes et si je pouvais m'éviter de créer 150 fois la formule ça m'aiderait beaucoup.
Ou alors, la fonction Filtre n'est peut être pas celle à utiliser pour mon objectif.
Au cas où vous ayez une autre idée de formule: Je chercher pour chaque ligne de mon tableau (150 lignes minimum) à selectionner dans un menu déroulant mon "Fournisseurs" puis en fonction du fournisseurs à sélectionner dans un menu déroulant le "produit".
Merci de votre aide.
PS: je sais que le sujet est excel mais je suis obligée d'utiliser Google sheet au boulot. J'espère que vous accepterez tout de même de m'aider.
Frédéric LE GUEN
21/01/2021 @ 15:22
Effectivement, c'est une excellente question et ce n'est pas du tout la fonction FILTRE qu'il faut utiliser. La fonction FILTRE n'est pas optimiser pour faire des recherches multiples. Il est préférable dans ce cas de figure d'utiliser la fonction RECHERCHEX car on peut sélectionner plusieurs colonnes dans le 3e paramètre
Joel TANJAKA
20/10/2020 @ 12:36
Bonjour,
Tous mes remerciements sur vos articles qui sont très enrichissants.
J'aimerai vous demander comment créer des menus déroulants dépendants avec la version MS Excel 2016.
J'ai déjà utilisé "Liste" dans Validation de données mais ça ne peut pas produire une liste dépendante.
J'ai essayé aussi "Personnalisé" dans Validation de données mais je n'y arrive pas.
Je vous remercie pour votre réponse.
Cordialement.
Frédéric LE GUEN
20/10/2020 @ 14:50
Non, seules les versions de Microsoft 365 et Excel Online possèdent les fonctions matricielles qui permettent de résoudre ce problème