Menu déroulant en cascade dans Excel

Dernière mise à jour le 23/09/2024
Temps de lecture : 3 minutes

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.

Tableau avec des données hiérarchisées

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 😮👍

Menu Deroulant Dependant

É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)

Fonction UNIQUE pour récupérer les valeurs uniques du premier niveau hiérarchique

Ensuite, nous allons créer un menu déroulant en activant le menu Données > Validation de données.

  1. Sélectionnez l'option Liste
  2. Écrivez simplement la première cellule ( E2 )
  3. Ajouter le symbole # pour indiquer que nous allons récupérer toutes les cellules renvoyées par la fonction UNIQUE
La formule du menu déroulant utilise les références étendues

Voilà, notre premier menu

Premier menu déroulant à partir de la fonction UNIQUE

É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

  1. Indiquer la colonne qui contient les données à retourner
  2. Indiquer la colonne sur laquelle effectuer le filtrage
  3. le test à réaliser (ici =)
  4. la cellule contenant la valeur du test (ici la cellule I3)

=FILTRE(B2:B56;A2:A56=I3;"")

La formule FILTRE permet dextraire les données sur un critère

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;"")))

Fonction utilisante 3 fonctions matricielles UNIQUE TRIER et FILTRE

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

Menu déroulant dynamique

Vidéo explicative

11 Comments

  1. 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?

    Reply

  2. 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

    Reply

    • 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.

      Reply

  3. 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

    Reply

    • Frédéric LE GUEN
      22/07/2022 @ 21:53

      Heuuuuuu, il faut voir le contexte. Comme ça, je ne peux pas répondre

      Reply

  4. 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

    Reply

    • Frédéric LE GUEN
      03/12/2020 @ 12:36

      Il faut utiliser la fonction TRANSPOSE pour inverser le résultat. =TRANSPOSE(FILTRE ...))

      Reply

      • 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

  5. 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.

    Reply

    • 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

      Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Microsoft MVP 2024

Menu déroulant en cascade dans Excel

Reading time: 3 minutes
Dernière mise à jour le 23/09/2024

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.

Tableau avec des données hiérarchisées

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 😮👍

Menu Deroulant Dependant

É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)

Fonction UNIQUE pour récupérer les valeurs uniques du premier niveau hiérarchique

Ensuite, nous allons créer un menu déroulant en activant le menu Données > Validation de données.

  1. Sélectionnez l'option Liste
  2. Écrivez simplement la première cellule ( E2 )
  3. Ajouter le symbole # pour indiquer que nous allons récupérer toutes les cellules renvoyées par la fonction UNIQUE
La formule du menu déroulant utilise les références étendues

Voilà, notre premier menu

Premier menu déroulant à partir de la fonction UNIQUE

É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

  1. Indiquer la colonne qui contient les données à retourner
  2. Indiquer la colonne sur laquelle effectuer le filtrage
  3. le test à réaliser (ici =)
  4. la cellule contenant la valeur du test (ici la cellule I3)

=FILTRE(B2:B56;A2:A56=I3;"")

La formule FILTRE permet dextraire les données sur un critère

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;"")))

Fonction utilisante 3 fonctions matricielles UNIQUE TRIER et FILTRE

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

Menu déroulant dynamique

Vidéo explicative

11 Comments

  1. 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?

    Reply

  2. 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

    Reply

    • 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.

      Reply

  3. 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

    Reply

    • Frédéric LE GUEN
      22/07/2022 @ 21:53

      Heuuuuuu, il faut voir le contexte. Comme ça, je ne peux pas répondre

      Reply

  4. 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

    Reply

    • Frédéric LE GUEN
      03/12/2020 @ 12:36

      Il faut utiliser la fonction TRANSPOSE pour inverser le résultat. =TRANSPOSE(FILTRE ...))

      Reply

      • 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

  5. 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.

    Reply

    • 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

      Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.