Afficher un plage de cellules selon une liste déroulante

c0oco0nuts -  
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 ?

1 réponse

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
    1. c0oco0nuts
       
      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
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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
    3. c0oco0nuts Messages postés 5 Statut Membre
       
      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