Comment créer un menu déroulant dynamique ?

Comment créer un menu déroulant dynamique ?
Dernière mise à jour le 05/02/2024
Temps de lecture : 3 minutes

Pour créer un menu déroulant dynamique, il y a deux méthodes

  1. Utiliser la fonction UNIQUE

    Cette technique s'applique avec la version d'Excel 365

  2. Mettre ses données dans un Tableau

    Ici, il faut se servir de la fonction INDIRECT pour renvoyer les éléments dans le menu déroulant

Créer un menu déroulant dans Excel

Nous avons vu dans cet article comment créer un menu déroulant dans une cellule de feuille de calcul. Seulement, avec la technique traditionnelle, l'ajout d'un nouvel élément dans la source de données n'apparait pas dans le menu déroulant.

Mais il est facile de corriger ce problème, soit en utilisant un Tableau, ou encore en utilisant les fonctions propagées

Méthode la fonction UNIQUE

Grâce aux fonctions d'Excel 365 il est très facile de pouvoir récupérer le contenu d'une colonne et sans les doublons. Tout d'abord, nous allons écrire la fonction UNIQUE.

=UNIQUE(Tableau1[Prénom]))

Donnees sans doublon avec la fonction UNIQUE

Seulement, il n'est pas possible d'indiquer directement une formule dans la référence d'une liste d'un menu déroulant. Mais pour rappeler le résultat d'une fonction matricielle, il faut utiliser une référence étendue grâce au symbole #.

=C2#

Diese pour appeler le resultat dune fonction matricielle

Exercice d'application

L'exercice en ligne suivant va vous présenter les étapes de construction d'un menu déroulant.

Lien pour faire l'exercice

Si vous n'avez pas Excel 365, il faut utiliser un tableau

Pour rendre dynamique une liste déroulante, une autre solution assez simple consiste à passer par l'outil Tableau et la fonction INDIRECT

  1. Sélectionnez vos données sources
  2. Activez le menu Insertion > Tableau
  3. Important, cochez la case Mon tableau comporte des en-têtes.
  1. Rouvrez le menu Données > Validation de données
  2. Changez la source en indiquant la formule suivante

=INDIRECT("Tableau1[Prénom]")

L'utilisation de la fonction INDIRECT est obligatoire car la zone Source, ne peut pas comprendre les références d'un Tableau.

La fonction INDIRECT permet en fait d'interpréter la référence de la colonne du Tableau écrite sous forme de texte comme nous l'avons expliqué dans cet article.

Menu déroulant dynamique
Menu déroulant dynamique

Comment bien écrire la fonction INDIRECT

La difficulté de cette technique, c'est que vous devez écrire la référence du Tableau manuellement dans la fonction INDIRECT.

Tout d'abord il est important de connaitre le nom de votre Tableau. Par défaut Excel nomme les tableaux Tableau1, Tableau2, ... Donc, avant de vous lancer dans l'écriture de la formule, il faut vérifier le nom donné au Tableau.

Pour connaître le nom du Tableau,

  1. Sélectionnez l'une des cellules du Tableau
  2. Allez dans le menu Création de Tableau (tout à droite des menus du ruban)
  3. Le nom du Tableau apparaît dans le ruban en haut à gauche

Indiquez ensuite le nom de la colonne que vous voulez retourner. Pour cela, nous devons respecter la codification des références dans un Tableau ; à savoir écrire le nom de la colonne entre crochets Tableau1[Prénom]

Articles liés

  • En associant la fonction UNIQUE et FILTRE, nous pouvons créer un menu déroulant sans blanc. Découvrez la technique dans cet article.
Menu déroulant avec une liste de valeurs disctinctes sans vide
Menu déroulant saisie semi automatique
Menu déroulant qui ne reprennent pas les prénoms déjà sélectionné

14 Comments

  1. COLLETTE
    25/08/2023 @ 09:43

    Bonjour,
    J'ai plusieurs colonnes. J'aimerais qu'avec la liste déroulante de codes magasin que j'ai, quand j'en affiche un, toute la ligne - nom, adresse et CP du magasin s'incrémentent automatiquement dans mon formulaire pour éviter de le taper manuellement. Est-ce possible svp ?
    Merci par avance pour votre aide.
    Cordialement,

    Reply

    • Frédéric LE GUEN
      25/08/2023 @ 11:11

      Bonjour,
      Oui, bien sur que c'est faisable. Une fois que vous avez sélectionné votre code, utilisez la fonction RECHERCHEX ou RECHERCHEV pour retourner les données associées à votre code.

      Reply

  2. Daniel
    11/04/2023 @ 20:40

    Bonsoir Monsieur

    Est-ce qu’il est possible à partir d’une seule et même liste de base de créer deux trajectoires de liste déroulante en cascade. Par exemple, d une liste de sites commerciaux, une liste déroulante en cascade pour les ingénieurs et une autre liste déroulante en cascade pour les assistantes commerciales, chaque liste sur 3 niveaux
    Merci et bonne soirée, vous félicitant pour l ergonomie de votre site

    Reply

  3. pascal palombi
    02/03/2023 @ 16:14

    bonjour

    est t'il possible d'avoir un menu deroulant par exemple

    XAUUSD
    EURUSD

    est en fonction du choix que l'on prend sa applique tel ou tel formule de calcule

    Reply

    • Frédéric LE GUEN
      02/03/2023 @ 18:58

      Oui bien sur, mais selon votre besoin, il y a de nombreuses façon de le construire

      Reply

  4. DE COURNUAUD Patrick
    02/12/2022 @ 19:54

    Formule appliquée et essayée en ajoutant un nom manuelemnt; mais boîte de dialogue qui s'ouvre avec :
    "Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule"
    Comment y remédier ?
    Merci

    Reply

    • Frédéric LE GUEN
      03/12/2022 @ 14:37

      Heuuuu, je ne peux absolument pas vous apporter une réponse car il peut y avoir des dizaines de raisons.

      Reply

  5. Deleurence
    27/02/2021 @ 17:23

    Bonjour, besoin d'un petit conseil d'expert : j'ai une colonne avec menu déroulant : équipe concernée qui contient 7 noms d'equipes , j'ai une autre colonne a coté avec un menu deroulant egalement et je voudrais y faire apparaître le nom des personnes appartenant à l'équipe sélectionnée...comment je relie les noms des personnes avec le nom des equipes ?? Merci de votre aide

    Reply

  6. cathy
    27/12/2020 @ 22:41

    bonjour,

    J'ai un tableau avec des articles puis une colonne de prix par rapport à un vendeur et une 3eme colonne de prix par rapport à un autre vendeur soit colonne A articles colonne B prix X colonne C prix Y
    Dans ma base de données sur une autre feuille suivant la liste déroulante d'articles j'aimerais que ma cellule de prix se modifie suivant le vendeur soit :
    colonne D vendeur X ou Y en liste déroulante
    colonne E articles en liste déroulante
    Colonne F prix unitaire en fonction du prix et du vendeur.
    Est-ce possible de trouver la formule qui correspond ??
    =SI(E3="";"";RECHERCHEV(E3;TARIFS!$A$1:$C$18;3;FAUX)*ET(D3=VENDEURS!$A$2;Classeur1.xlsx!PRIX_X;Classeur1.xlsx!PRIX_Y;-1)) ne fonctionne que pour 1 des 2 vendeurs
    un petit coup de main svp merci beaucoup

    Reply

  7. Rahma Ferrara
    11/12/2020 @ 15:42

    Bonjour,

    Lorsque le menu déroulant contient des centaines de lignes,
    -> est-il possible de simplifier la saisie en n'ayant un ajustement dynamique des propositions du menu déroulant en fonction des lettres saisies ?

    Je ne sais pas si ma question est clair :-/

    Reply

  8. MGR
    25/11/2020 @ 17:54

    Bonjour,
    J'ai un onglet de ENTREPRISES :
    Nom : adresse : ....
    Ensuite j'ai un onglet CONTACTS :
    Entreprise : nom : prénom

    Dans l'onglet OPPORTUNITES j'ai :
    Entreprise : nom contact

    Je voudrais pouvoir dans ce dernier onglet, lors de la saisie d'une opportunité, après avoir saisie l'entreprise en col A pouvoir avoir une validation des noms de contacts de cette entreprise en fonction de toutes les occurrences de l'entreprise dans l'onglet contact. Si vous pouvez m'aider ? Merci

    Reply

  9. Benji12
    20/11/2020 @ 12:31

    Bonjour,
    Merci pour vos explications toujours claires !
    Dans la continuité des listes déroulantes, est-il possible d'y afficher un choix par défaut (sans passer par du vba) ?

    Reply

    • Frédéric LE GUEN
      20/11/2020 @ 13:24

      Bonjour,
      Non, ça ce n'est pas possible

      Reply

  10. JM
    30/10/2020 @ 22:41

    Merci ça a fonctionné 🙂

    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.

Comment créer un menu déroulant dynamique ?

Reading time: 3 minutes
Dernière mise à jour le 05/02/2024

Pour créer un menu déroulant dynamique, il y a deux méthodes

  1. Utiliser la fonction UNIQUE

    Cette technique s'applique avec la version d'Excel 365

  2. Mettre ses données dans un Tableau

    Ici, il faut se servir de la fonction INDIRECT pour renvoyer les éléments dans le menu déroulant

Créer un menu déroulant dans Excel

Nous avons vu dans cet article comment créer un menu déroulant dans une cellule de feuille de calcul. Seulement, avec la technique traditionnelle, l'ajout d'un nouvel élément dans la source de données n'apparait pas dans le menu déroulant.

Mais il est facile de corriger ce problème, soit en utilisant un Tableau, ou encore en utilisant les fonctions propagées

Méthode la fonction UNIQUE

Grâce aux fonctions d'Excel 365 il est très facile de pouvoir récupérer le contenu d'une colonne et sans les doublons. Tout d'abord, nous allons écrire la fonction UNIQUE.

=UNIQUE(Tableau1[Prénom]))

Donnees sans doublon avec la fonction UNIQUE

Seulement, il n'est pas possible d'indiquer directement une formule dans la référence d'une liste d'un menu déroulant. Mais pour rappeler le résultat d'une fonction matricielle, il faut utiliser une référence étendue grâce au symbole #.

=C2#

Diese pour appeler le resultat dune fonction matricielle

Exercice d'application

L'exercice en ligne suivant va vous présenter les étapes de construction d'un menu déroulant.

Lien pour faire l'exercice

Si vous n'avez pas Excel 365, il faut utiliser un tableau

Pour rendre dynamique une liste déroulante, une autre solution assez simple consiste à passer par l'outil Tableau et la fonction INDIRECT

  1. Sélectionnez vos données sources
  2. Activez le menu Insertion > Tableau
  3. Important, cochez la case Mon tableau comporte des en-têtes.
  1. Rouvrez le menu Données > Validation de données
  2. Changez la source en indiquant la formule suivante

=INDIRECT("Tableau1[Prénom]")

L'utilisation de la fonction INDIRECT est obligatoire car la zone Source, ne peut pas comprendre les références d'un Tableau.

La fonction INDIRECT permet en fait d'interpréter la référence de la colonne du Tableau écrite sous forme de texte comme nous l'avons expliqué dans cet article.

Menu déroulant dynamique
Menu déroulant dynamique

Comment bien écrire la fonction INDIRECT

La difficulté de cette technique, c'est que vous devez écrire la référence du Tableau manuellement dans la fonction INDIRECT.

Tout d'abord il est important de connaitre le nom de votre Tableau. Par défaut Excel nomme les tableaux Tableau1, Tableau2, ... Donc, avant de vous lancer dans l'écriture de la formule, il faut vérifier le nom donné au Tableau.

Pour connaître le nom du Tableau,

  1. Sélectionnez l'une des cellules du Tableau
  2. Allez dans le menu Création de Tableau (tout à droite des menus du ruban)
  3. Le nom du Tableau apparaît dans le ruban en haut à gauche

Indiquez ensuite le nom de la colonne que vous voulez retourner. Pour cela, nous devons respecter la codification des références dans un Tableau ; à savoir écrire le nom de la colonne entre crochets Tableau1[Prénom]

Articles liés

  • En associant la fonction UNIQUE et FILTRE, nous pouvons créer un menu déroulant sans blanc. Découvrez la technique dans cet article.
Menu déroulant avec une liste de valeurs disctinctes sans vide
Menu déroulant saisie semi automatique
Menu déroulant qui ne reprennent pas les prénoms déjà sélectionné

14 Comments

  1. COLLETTE
    25/08/2023 @ 09:43

    Bonjour,
    J'ai plusieurs colonnes. J'aimerais qu'avec la liste déroulante de codes magasin que j'ai, quand j'en affiche un, toute la ligne - nom, adresse et CP du magasin s'incrémentent automatiquement dans mon formulaire pour éviter de le taper manuellement. Est-ce possible svp ?
    Merci par avance pour votre aide.
    Cordialement,

    Reply

    • Frédéric LE GUEN
      25/08/2023 @ 11:11

      Bonjour,
      Oui, bien sur que c'est faisable. Une fois que vous avez sélectionné votre code, utilisez la fonction RECHERCHEX ou RECHERCHEV pour retourner les données associées à votre code.

      Reply

  2. Daniel
    11/04/2023 @ 20:40

    Bonsoir Monsieur

    Est-ce qu’il est possible à partir d’une seule et même liste de base de créer deux trajectoires de liste déroulante en cascade. Par exemple, d une liste de sites commerciaux, une liste déroulante en cascade pour les ingénieurs et une autre liste déroulante en cascade pour les assistantes commerciales, chaque liste sur 3 niveaux
    Merci et bonne soirée, vous félicitant pour l ergonomie de votre site

    Reply

  3. pascal palombi
    02/03/2023 @ 16:14

    bonjour

    est t'il possible d'avoir un menu deroulant par exemple

    XAUUSD
    EURUSD

    est en fonction du choix que l'on prend sa applique tel ou tel formule de calcule

    Reply

    • Frédéric LE GUEN
      02/03/2023 @ 18:58

      Oui bien sur, mais selon votre besoin, il y a de nombreuses façon de le construire

      Reply

  4. DE COURNUAUD Patrick
    02/12/2022 @ 19:54

    Formule appliquée et essayée en ajoutant un nom manuelemnt; mais boîte de dialogue qui s'ouvre avec :
    "Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule"
    Comment y remédier ?
    Merci

    Reply

    • Frédéric LE GUEN
      03/12/2022 @ 14:37

      Heuuuu, je ne peux absolument pas vous apporter une réponse car il peut y avoir des dizaines de raisons.

      Reply

  5. Deleurence
    27/02/2021 @ 17:23

    Bonjour, besoin d'un petit conseil d'expert : j'ai une colonne avec menu déroulant : équipe concernée qui contient 7 noms d'equipes , j'ai une autre colonne a coté avec un menu deroulant egalement et je voudrais y faire apparaître le nom des personnes appartenant à l'équipe sélectionnée...comment je relie les noms des personnes avec le nom des equipes ?? Merci de votre aide

    Reply

  6. cathy
    27/12/2020 @ 22:41

    bonjour,

    J'ai un tableau avec des articles puis une colonne de prix par rapport à un vendeur et une 3eme colonne de prix par rapport à un autre vendeur soit colonne A articles colonne B prix X colonne C prix Y
    Dans ma base de données sur une autre feuille suivant la liste déroulante d'articles j'aimerais que ma cellule de prix se modifie suivant le vendeur soit :
    colonne D vendeur X ou Y en liste déroulante
    colonne E articles en liste déroulante
    Colonne F prix unitaire en fonction du prix et du vendeur.
    Est-ce possible de trouver la formule qui correspond ??
    =SI(E3="";"";RECHERCHEV(E3;TARIFS!$A$1:$C$18;3;FAUX)*ET(D3=VENDEURS!$A$2;Classeur1.xlsx!PRIX_X;Classeur1.xlsx!PRIX_Y;-1)) ne fonctionne que pour 1 des 2 vendeurs
    un petit coup de main svp merci beaucoup

    Reply

  7. Rahma Ferrara
    11/12/2020 @ 15:42

    Bonjour,

    Lorsque le menu déroulant contient des centaines de lignes,
    -> est-il possible de simplifier la saisie en n'ayant un ajustement dynamique des propositions du menu déroulant en fonction des lettres saisies ?

    Je ne sais pas si ma question est clair :-/

    Reply

  8. MGR
    25/11/2020 @ 17:54

    Bonjour,
    J'ai un onglet de ENTREPRISES :
    Nom : adresse : ....
    Ensuite j'ai un onglet CONTACTS :
    Entreprise : nom : prénom

    Dans l'onglet OPPORTUNITES j'ai :
    Entreprise : nom contact

    Je voudrais pouvoir dans ce dernier onglet, lors de la saisie d'une opportunité, après avoir saisie l'entreprise en col A pouvoir avoir une validation des noms de contacts de cette entreprise en fonction de toutes les occurrences de l'entreprise dans l'onglet contact. Si vous pouvez m'aider ? Merci

    Reply

  9. Benji12
    20/11/2020 @ 12:31

    Bonjour,
    Merci pour vos explications toujours claires !
    Dans la continuité des listes déroulantes, est-il possible d'y afficher un choix par défaut (sans passer par du vba) ?

    Reply

    • Frédéric LE GUEN
      20/11/2020 @ 13:24

      Bonjour,
      Non, ça ce n'est pas possible

      Reply

  10. JM
    30/10/2020 @ 22:41

    Merci ça a fonctionné 🙂

    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.