Aide pour comprendre une formule

FBCH44 Messages postés 8 Statut Membre -  
 BFCH -
Bonjour,
Je vous ai sollicité pour obtenir dans un onglet une extraction d'une base.
Vous m'aviez renvoyé cette solution, qui correspond tout à fait à mes attentes. Malheureusement, je ne comprends pas l'intégralité de la formule et n'arrive pas l'adapter à d'autres demandes.
est ce que quelqu'un pourrait m'aider à la comprendre svp ?

SI(LIGNES($1:1)<=NB.SI(TS_data;$A$1);INDEX(MesData;PETITE.VALEUR(SI(TS_data=$A$1;LIGNE(INDIRECT("1:"&LIGNES(TS_data))));LIGNES($1:1));1);"")

vous remerciant par avance pour votre aide

CH

6 réponses

  1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour à tous,
    SI(LIGNES($1:1)<=NB.SI(TS_data;$A$1);INDEX(MesData;PETITE.VALEUR(SI(TS_data=$A$1;LIGNE(INDIRECT("1:"&LIGNES(TS_data))));LIGNES($1:1));1);"")

    SI(LIGNES($1:1)<=NB.SI(TS_data;$A$1) ==>""
    la formule fonctionne pour les lignes auxquelles elle s'applique, sinon, elle renvoie ""
    peut etre remplacé par sierreur(formule;"").
    on va ranger dans une autre liste les celules qui repondent a la condition, ici TS_data=$A$1
    Pour les ranger il faut un ordre
    Cet ordre, c'est LIGNES($1:1)
    on aura petite.valeur(plage;1, puis 2 (lignes($1;2), etc au fur et a mesure qu' on descend la formule quand il n'y en aura plus, on aura une erreur et le sierreur donnera le ""

    LIGNE(INDIRECT("1:"&LIGNES(TS_data)))
    Pour compter les valeur de la lise a traiter, il faut savoir combien il y a de lignes
    si par exemple TS_data a 10 lignes
    LIGNE(INDIRECT("1:"&LIGNES(TS_data))) ==>LIGNE(INDIRECT("1:"&10))==>ligne($1:$10)
    si TS_data) correspond a la plage a5:a15 , ou peut mettre ligne(a5:a15 )-4
    pourquoi -4 ?
    parce que l'index d'une plage commence a 1 ce qui fait 5-4;6-4;etc...
    SI(TS_data=$A$1;LIGNE(INDIRECT("1:"&LIGNES(TS_data))))
    ça va donner une matrice de 0 ou de 1 appliquée a celle des lignes
    on obtient une matrice genre (faux;2;3;faux;faux;faux)
    PETITE.VALEUR(SI(TS_data=$A$1;LIGNE(INDIRECT("1:"&LIGNES(TS_data))));LIGNES($1:1))

    la premiere valeur c'est 3, apres 4 etc.

    dansc la formule se réduit a
    INDEX(MesData;2) puis au fur et a mesure qu'on descend
    INDEX(MesData;3)
    etc
    on a ainsi crée une liste des mes data qui repondent aux conditions TS_data=$A$1

    Crdlmt
    0
    1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
       
      en excel 365, ça correspond a la fonction filtre()
      0
  2. FBCH44 Messages postés 8 Statut Membre
     
    merci beaucoup pour ces explications.
    Mais suis désolée, d'insister, je voulais créer une nouvelle liste des mes data mais cette fois qui répondent aux conditions consultations palais oui.
    la liste que j'obtiens : 1er nom puis #Nombre!
    je ne vois pas ce qui ne colle pas
    SI(LIGNES($1:1)<=NB.SI(Tableau3[Consultation_palais];$A$1);INDEX(MesData;PETITE.VALEUR(SI(Tableau3[Consultation_palais]=$A$1;LIGNE(INDIRECT("1:"&LIGNES(Tableau3[Consultation_palais]))));LIGNES($1:1));1);"")

    si vous avez la possibilité de m'aider à nouveau je vous en remercie.

    bonne journée

    BFCH
    0
    1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
       
      Ce n'est pas moi qui t'ai fait cette formule, je te l'ai simplement expliquée (Mal apparemment !)
      C'est quoi le ;1) a la fin ?
      essaye
      SI(LIGNES($1:1)<=NB.SI(Tableau3[Consultation_palais];$A$1);INDEX(MesData;PETITE.VALEUR(SI(Tableau3[Consultation_palais]=$A$1;LIGNE(INDIRECT("1:"&LIGNES(Tableau3[Consultation_palais]))));LIGNES($1:1)));"")

      Crdlmt
      0
  3. FBCH44 Messages postés 8 Statut Membre
     
    ca me mets #ref!

    et non, les explications m'aide à comprendre la formule et justement je ne comprends pas pourquoi ca ne fonctionne pas.

    en tous les cas merci d'avoir pris le temps d'y répondre

    bonne soirée
    0
    1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
       
      mets ton fichier sur le forum, on regardera ensemble

      il me semble qu'il manque des $ dans le indirect
      LIGNE(INDIRECT("$1:$"&LIGNES(Tableau3[Consultation_palais]))))
      Sinon, tes lignes bougent quand tu descends ta formule

      Crdlmt
      0
  4. FBCH44 Messages postés 8 Statut Membre
     
    bonjour,

    Merci pour tes réponses et d'essayer de me dépanner.
    même avec les $ ca ne marche pas.
    voici l'image de mon fichier. je n'arrive pas à le joindre en excel.



    je souhaiterai un onglet qui récupère les données des lignes qui ont "oui" dans consultation palais.

    Le tableau "base de données" peut comporter 300 lignes. l'onglet "consultation palais" une cinquantaine.
    et il me faut réussir à le faire en automatique, pas par un filtre, car je suis la "conceptrice" mais les utilisateurs ne connaissent pas bien excel et surtout pas les filtres.

    il faut donc que j'arrive à leur extraire automatiquement l'onglet avec les données dont ils ont besoin.

    merci beaucoup pour ton aide

    bonne journée

    BFCH
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour,

    Un fichier EXCEL (test ou non), complété par des explications exhaustives et des exemples remplis à la main, mis sur https://www.cjoint.com/ , ainsi que ta version d'Excel, permettrait aux intervenants de répondre plus précisément à ta question.
    Crdmt
    0
  7. BFCH
     
    bonjour,

    voici le lien pour avoir le fichier sur excel

    https://www.cjoint.com/c/LAyjguxddru

    Merci encore pour votre aide

    CH
    0