Créer une liste de choix à partir d'une liste de valeur autorisées est facile, comme nous l'avons montré dans l'article précédent. Mais peut-on facilement créer des listes imbriquées, une liste dont la proposition de valeurs autorisées dépend du choix d'une valeur dans une autre liste...
- le choix du pays détermine la liste de choix d'une région... qui détermine la liste de choix d'une ville....
- le choix du produit dépend du choix de la famille d'article...
Les utilisations sont nombreuses. Il existe plusieurs méthodes pour créer ce type de listes de choix, utilisant des formules plus ou moins complexes, et d'autres utilisant le langage VBA.
Une méthode très simple
Voici une méthode simple faisant seulement appel à :
- des noms définis pour identifier les listes de valeur
- la fonction INDIRECT pour sélectionner la liste correspondant au besoin
Étape 1 - Créer les listes de sélection
La première étape est de créer les listes de valeurs dont on aura besoin, de préférence sur un ongle séparé de l'onglet de saisie, surtout si l'on doit faire appel à un nombre important de listes.
Saisir les listes en colonne : une colonne = une plage = une liste de valeurs
Si les valeurs sont figées, on peut utiliser des plages fixes ; si les valeurs doivent évoluer au cours de la vie du modèle Excel, préférer la création de tableaux :
- un tableau de une colonne par liste de préférence,
- ou un tableau multi-colonnes (une colonne par liste) si les listes sont de longueur identique ou proche.
Étape 2 - Définir un nom pour chaque liste
Pour chaque liste, définir un nom (Formules - Définir un nom - Définir un nom) : choisir comme nom de liste une des valeurs de la liste appelante.
- liste appelante - niveau 1: Pays (France, Allemagne, Belgique)
- liste appelée - niveau 2 : France (Alsace, Lorraine, RhôneAlpes)
- liste appelée - niveau 3 : Lorraine : (Metz, Nancy)
Utiliser l'option Données - Validation des données pour associer les listes de validation aux cellules de saisie (cellule individuelle ou plage de cellules, selon le besoin).
Pour le niveau 0
La formule est : =nom_défini_pour_la_liste_de_niveau_1
- dans notre exemple : =pays
"pays" étant le nom défini pour la liste des pays
La formule est : =INDIRECT(paramètre), "paramètre" étant l'adresse directe de la cellule de saisie du champ de niveau précédent, ou un nom faisant référence à une cellule ou une plage de cellules.
- dans notre exemple :
- =INDIRECT(C5)pour le niveau région ; C5 contient une valeur correspondant à un nom défini identifiant une liste de valeurs autorisées
- =INDIRECT(C7)
pour le niveau ville
La fonction INDIRECT renvoie la valeur contenue dans la cellule correspondant à la valeur du paramètre