Afficher un plage de cellules selon une liste déroulante [Fermé]

Signaler
-
Messages postés
5
Date d'inscription
mercredi 22 avril 2015
Statut
Membre
Dernière intervention
28 octobre 2015
-
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 ?

1 réponse

Messages postés
25747
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
5 712
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?
Messages postés
25747
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
5 712
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
Messages postés
5
Date d'inscription
mercredi 22 avril 2015
Statut
Membre
Dernière intervention
28 octobre 2015

Re

C'est un peu compliqué pour moi tous ces termes comme je gère le basic d'excel, mais je vous remercie pour votre aide. Je vais essayé de comprendre comment marche chaque fonction indépendamment afin de pouvoir appliquer la fonction finale dans mon fichier Excel.

Merci encore
Cordialement