De quoi parle-t-on ?
Exemple classique : Marque et modèles
> Liste 1 : Choix de la marque de voiture.
> Liste 2 : Choix du modèle dans une liste correspondant à la marque sélectionnée dans la 1ere liste.
Créer ce genre de listes de validation en cascade est souvent complexe.
Des formules imbriquées avec des fonctions avancées (DECALER, INDEX, EQUIV…) sont souvent utilisées.
Ça se complexifie si le nombre de modèle n’est pas le même pour chaque marque (problème souvent ignoré en renvoyant des valeurs vides). Et s'il faut ajouter des éléments on devra souvent reprendre les formules !
Ma solution pour éviter tout ça : Utiliser des tableaux structurés.
1 - On génère les tableaux structurés dans une feuille Listes (qui pourra être masquée par la suite)
On se place dans le tableau > Ruban Insertion > Tableau.
On coche Mon tableau comporte des entêtes si c’est le cas.
On renomme le tableau (obligatoire) en TabMarque par exemple (pas d’espaces).
On refait la même chose pour les 2 autres tableaux.
ATTENTION : Les noms des 2 tableaux modèles doivent contenir la valeur correspondante aux valeurs de TabMarque.
Exemple de nom pour le tableau Renault : Renault, TabRenault, ModelesRenault…
Je vais utiliser le préfixe Tab soit TabRenault.
2 - On met en place le règles de validations
On sélectionne à la plage devant avoir la validation Marque.
Ruban Données > Validations >Listes
=INDIRECT("TabMarque")
Tester la liste et sélectionner une valeur pour la 1ere cellule (pas obligatoire mais sinon vous aurez un vilain message d’erreur à l’étape suivante mais sans conséquence).
On sélectionne à la plage devant avoir la validation Modèle (du haut vers le bas pour que la cellule active soit la 1ere cellule de la plage ici C3).
=INDIRECT("Tab" & B3)
Si dans la liste Marque on sélectionne Renault, la fonction INDIRECT ira chercher TabRenault comme liste.
C’est terminé !
Les listes s’adaptent en hauteur en fonction de leur contenu, de même si vous ajouter des valeurs aux listes (même en les ajoutant en bas de liste).
Bonus : Un fois le choix de la marque et du modèle sont faits, si je change la marque le modèle de l'ancienne marque reste affiché ! Comment éviter ça ?
Une petite mise en forme conditionnelle changeant la couleur du texte en rouge ou en la couleur du fond par exemple (ici j'ai volontairement sélectionné une couleur plus claire).
=NB.SI(INDIRECT("Tab" & B3);C3)=0
Merci pour votre attention bienveillante