Afficher un plage de cellules selon une liste déroulante
c0oco0nuts
-
c0oco0nuts Messages postés 5 Statut Membre -
c0oco0nuts Messages postés 5 Statut Membre -
Bonjour,
J'ai créé une liste déroulante avec un certain nombre de choix. Je voudrais que lorsque un mot est choisi dans cette liste, une plage de cellules spécifiques à ce mot s'affichent en dessous. Est-ce possible ? Comment faire ?
J'ai créé une liste déroulante avec un certain nombre de choix. Je voudrais que lorsque un mot est choisi dans cette liste, une plage de cellules spécifiques à ce mot s'affichent en dessous. Est-ce possible ? Comment faire ?
1 réponse
-
Bonjour
voyez si ce modèle peut vous aider
et revenez avec plus d'infos sur vos données si problème
https://www.cjoint.com/c/EJtifEXmgCU
crdlmnt
-
Bonjour, merci pour votre retour.
Ce modèle correspond effectivement à ce que je cherche à faire, cependant je ne comprends pas la formule : =SI(NB.SI(BdD!$A$2:$A$1000;$B$1)>=LIGNE()-2;INDEX(BdD!$A$2:$W$1000;EQUIV(Pain!$B$1&LIGNE()-2;BdD!$X$2:$X$1000;0);2);"")
Du coup je n'arrive pas la reproduire sur mon fichier excel... Pouvez-vous m'aider à comprendre cette formule? -
Re
LIGNE()-2 définit la valeur 1 sur la ligne 3 (soit 3-2). Il est aussi possible d'écrire LINE(A1) sans bloquer pour que cette valeur devienne A2 et A3 etc en la tirant vers le bas
=SI(NB.SI(BdD!$A$2:$A$1000;$B$1)>=LIGNE()-2;INDEX(BdD!$A$2:$W$1000;EQUIV(Pain!$B$1&LIGNE()-2;BdD!$X$2:$X$1000;0);2);"")
Donc
=SI(NB.SI(BdD!$A$2:$A$1000;$B$1)>=LIGNE()-2
compte le nombre de fois ou la valeur B1 est contenue dans la colonne A de BdD
et la compare à la valeur du N° de ligne -2
si cette valeur est >= que ce N°, la formule suivante s'applique, sinon renvoi ""
ceci afin d'éviter des affichages #N/A dans le tableau une fois toutes les lignes trouvées
INDEX(BdD!$A$2:$W$1000;EQUIV(Pain!$B$1&LIGNE()-2;BdD!$X$2:$X$1000;0);2);"")
principe d'INDEX
INDEX(Champ de données; N° de ligne; N° de colonne)
ressort la valeur de la cellule au croisement de la colonne et de la ligne indiquées (référence dans le champ et non pas les N° de la feuille. 1 = 1° ligne du champ et idem pour colonne)
Pain!$B$1&LIGNE()-2 regroupe la valeur en B1 soit sur ligne 2 > Pain1 ou autre selon la valeur de B1
EQUIV(Valeur;champ;0) ressort le N° de ligne du champ où se trouve la, valeur cherchée
Donc dans notre formule
INDEX(BdD!$A$2:$W$1000 définit le champ des valeurs à trouver
EQUIV($B$1&LIGNE()-2;BdD!$X$2:$X$1000;0) va chercher le N° de ligne du champ où se trouve la valeur composée par $B$1 et LIGNE()-1 soit une des valeurs de la colonne codage de BdD
;2) indique que c'est la valeur de la seconde colonne du champ INDEX qu'il faut rechercher
et ;"") en fin de formule renvoie une cellule sans valeur si la condition initiale n'est pas remplie.
Woouufff.!!!
Pas très facile à expliquer par écrit, j'espère que ça ira
En complément
la formule est simplifiable si vous avez Excel à partir de 2007 et peut s'écrire:
=SIERREUR(INDEX(BdD!$A$2:$W$1000;EQUIV(Pain!$B$1&LIGNE()-2;BdD!$X$2:$X$1000;0);2);"")
bon courage
crdlmnt -
-