Afficher un plage de cellules selon une liste déroulante

Fermé
c0oco0nuts - Modifié par c0oco0nuts le 19/10/2015 à 10:04
c0oco0nuts Messages postés 5 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 28 octobre 2015 - 28 oct. 2015 à 15:58
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

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
19 oct. 2015 à 10:06
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
0
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?
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
19 oct. 2015 à 14:36
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
0
c0oco0nuts Messages postés 5 Date d'inscription mercredi 22 avril 2015 Statut Membre Dernière intervention 28 octobre 2015
28 oct. 2015 à 15:58
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
0