Aide pour comprendre une formule

Fermé
FBCH44 Messages postés 8 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 12 avril 2022 - Modifié le 15 janv. 2022 à 20:41
 BFCH - 24 janv. 2022 à 10:11
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

DjiDji59430 Messages postés 4144 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 16 novembre 2024 678
14 janv. 2022 à 19:34
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
DjiDji59430 Messages postés 4144 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 16 novembre 2024 678
15 janv. 2022 à 10:25
en excel 365, ça correspond a la fonction filtre()
0
FBCH44 Messages postés 8 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 12 avril 2022
17 janv. 2022 à 11:10
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
DjiDji59430 Messages postés 4144 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 16 novembre 2024 678
17 janv. 2022 à 17:38
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
FBCH44 Messages postés 8 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 12 avril 2022
17 janv. 2022 à 17:47
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
DjiDji59430 Messages postés 4144 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 16 novembre 2024 678
Modifié le 17 janv. 2022 à 23:39
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
FBCH44 Messages postés 8 Date d'inscription mardi 4 janvier 2022 Statut Membre Dernière intervention 12 avril 2022
18 janv. 2022 à 09:56
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DjiDji59430 Messages postés 4144 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 16 novembre 2024 678
18 janv. 2022 à 11:36
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
bonjour,

voici le lien pour avoir le fichier sur excel

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

Merci encore pour votre aide

CH
0