Excel · Validation des données · A3iformations

Listes déroulantes en cascade dans Excel

Dans une liste en cascade, aussi appelée liste dépendante, le contenu d’une liste déroulante dépend du choix fait dans la précédente : on choisit une catégorie, puis seulement les formations de cette catégorie, puis le niveau proposé pour cette formation. Cette page présente la méthode INDIRECT avec des plages nommées, la gestion des espaces, la remise à zéro des choix devenus incohérents et une méthode sans noms multiples basée sur DECALER.

Méthode classique=INDIRECT($B2)
Noms avec espacesSUBSTITUE
Une seule tableDECALER + EQUIV
Choix incohérentsMFC ou macro
1

Le principe

La validation de la 2e colonne ne pointe pas vers une plage, mais vers un texte transformé en référence : =INDIRECT($B2). Si B2 contient « PAO », INDIRECT renvoie la plage nommée PAO. Il faut donc une plage nommée par valeur de la 1re liste, portant exactement le même nom. Pour une liste simple qui s’agrandit toute seule, voir notre page liste déroulante dynamique.

ÉtapeOùQuoi
1. Préparer les listesFeuille ListesUne colonne par catégorie, le nom de la catégorie en en-tête
2. Nommer en une foisFormules › Créer à partir de la sélectionSélectionner le bloc, cocher « Ligne du haut » : chaque colonne reçoit le nom de son en-tête
3. 1re listeB2:B50Validation › Liste, Source : =Categories
4. 2e listeC2:C50Validation › Liste, Source : =INDIRECT($B2) (B figé, ligne libre)
Message à la créationSi B2 est encore vide, Excel affiche « La source est actuellement évaluée comme une erreur ». C’est normal : répondez Oui, la liste fonctionnera dès qu’une catégorie sera choisie.
Référence mixteÉcrivez $B2 et non $B$2 : sinon toutes les lignes dépendront de la catégorie de la ligne 2.
2

Cascade à 3 niveaux avec INDIRECT

Le 3e niveau suit la même logique : une plage nommée par formation (Excel, Word, Power_BI…) contenant les niveaux proposés, et la source =INDIRECT(SUBSTITUE($C2;" ";"_")). SUBSTITUE est indispensable dès qu’une valeur contient un espace, car un nom défini ne peut pas en contenir.

Simulateur : catégorie › formation › niveau
=Categories
Gestionnaire de noms

    Sans SUBSTITUEChoisissez Data puis Power BI en décochant SUBSTITUE : INDIRECT("Power BI") renvoie #REF! et la liste du niveau reste vide.
    Recopier la validationCréez la validation sur toute la colonne d’un coup (C2:C50 sélectionnées, cellule active C2) : Excel adapte $B2 à chaque ligne.
    3

    Gérer les choix devenus incohérents

    La validation ne contrôle une cellule qu’au moment de la saisie. Si l’on change la catégorie en B2 après avoir choisi une formation, C2 et D2 gardent leur ancienne valeur. Trois parades, de la plus simple à la plus complète :

    SolutionMise en place
    Repérer ponctuellementDonnées › Validation des données › Entourer les données non valides
    Alerter en permanenceMise en forme conditionnelle sur C2:C50, formule =ET(C2<>"";ESTNA(EQUIV(C2;INDIRECT($B2);0))), remplissage rouge
    Effacer automatiquementMacro événementielle dans le module de la feuille (classeur .xlsm)
    Private Sub Worksheet_Change(ByVal Target As Range)
        ' Efface Formation et Niveau quand la catégorie change
        If Target.CountLarge > 1 Then Exit Sub
        If Not Intersect(Target, Me.Range("B2:B50")) Is Nothing Then
            Application.EnableEvents = False
            Target.Offset(0, 1).Resize(1, 2).ClearContents
            Application.EnableEvents = True
        End If
    End Sub
    Où coller la macroAlt + F11, double-clic sur la feuille concernée dans l’explorateur de projets, puis collage. Enregistrez au format .xlsm. Ajoutez la même logique sur C2:C50 pour effacer le niveau quand la formation change.
    Sans macroLa MFC suffit dans la plupart des fichiers partagés : elle fonctionne partout, y compris dans Excel pour le web, où les macros ne s’exécutent pas.
    4

    Une seule table avec DECALER + EQUIV

    Avec beaucoup de catégories, créer un nom par catégorie devient lourd. Alternative : une table unique à deux colonnes (Catégorie, Formation) triée par catégorie. EQUIV trouve la première ligne de la catégorie, NB.SI compte ses lignes, et DECALER découpe le bloc correspondant :

    =DECALER(Listes!$B$1;EQUIV($B2;Listes!$A:$A;0)-1;0;NB.SI(Listes!$A:$A;$B2);1)

    Simulateur : la table unique
    EQUIV
    NB.SI
    Plage
    Liste proposée en C2

      Tri obligatoireDECALER renvoie un bloc continu : si une ligne est ajoutée en bas sans retrier, la liste mélange les catégories. Pensez à trier (Données › Trier) après chaque ajout.
      Microsoft 365La source d’une validation n’accepte pas directement FILTRE. Placez =FILTRE(Listes!B2:B20;Listes!A2:A20=B2) dans une cellule d’aide (H2) et utilisez =$H$2# comme source : pratique pour une fiche d’une ligne, pas pour une colonne entière.
      Exercice de synthèse : bon de commande de formation en cascade

      Télécharger le fichier d’exercice (Énoncé et Corrigé)

      1. Feuille Listes : sélectionnez A1:C5, Formules › Créer à partir de la sélection › Ligne du haut. Nommez E2:E4 « Categories ».
      2. Feuille Niveaux : même opération sur A1:I5. Excel remplace automatiquement l’espace de « Power BI » par un trait bas : le nom créé est Power_BI.
      3. Feuille Commande : B2:B11 liste =Categories, C2:C11 =INDIRECT($B2), D2:D11 =INDIRECT(SUBSTITUE($C2;" ";"_")).
      4. Mise en forme conditionnelle rouge sur C2:C11 pour les formations incohérentes.
      5. Colonne F : même cascade avec la table unique de la feuille Table et DECALER + EQUIV. Comparez avec la feuille Commande (corrigé).
      A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA Interface Excel Microsoft 365 en français