XL pour MAC Quelle fonction utiliser pour renvoyer différents résultats en fonction d'un critère qui se répète sur plusieurs lignes ?

Dous

XLDnaute Nouveau
Bonjour à tous,

Je sollicite votre aide car je rencontre un petit souci avec mon fichier ci-joint. Dans l'onglet plage, je dispose de toutes les information concernants les échantillons reçus et dans mon onglet Synthèse, je ne souhaite extraire que les informations des échantillons destinés au site de réception SL. J'ai essayé la formule index/Equiv mais pour le moment elle ne me renvoie que les informations de la première ligne SL et non pas à chaque fois qu'il trouve SL. Je ne sais pas si je me suis fait comprendre, en tout cas merci d'avance à ceux qui m'aideront à résoudre ce problème. CF fichier joint
 

Pièces jointes

  • ESSAI.xlsx
    10.3 KB · Affichages: 4

JHA

XLDnaute Barbatruc
Bonjour à tous,

Je te conseille de mettre tes données sous mode tableau.

Par formule matricielle en "A4" à valider par Ctrl+Maj+Entrée
VB:
=SIERREUR(INDEX(Plage!A$2:A$10;PETITE.VALEUR(SI(Plage!$A$2:$A$10=Synthese!$A$1;LIGNE(Plage!$A$2:$A$10)-1);LIGNE(1:1)));"")
copier vers le bas et la droite.

Tu peux aussi le faire avec un filtre avancé.

JHA
 

Pièces jointes

  • ESSAI.xlsx
    13.4 KB · Affichages: 0

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Dous,
un essai en PJ avec :
Code:
En colonne A :
=SI(NB.SI(Plage!$A$2:$A$100;Synthese!$A$1)>=LIGNE(1:1);Synthese!$A$1;"")
Ensuite :
=SI($A4="";"";INDEX(Plage!B$2:B$100;PETITE.VALEUR(SI(Plage!$A$2:$A$100=Synthese!$A$1;LIGNE(INDIRECT("1:"&LIGNES(Plage!$A$2:$A$100))));LIGNE(1:1))))
A valider par Maj+ctrl+entrée car formules matricielles.
 

Pièces jointes

  • ESSAI.xlsx
    11.5 KB · Affichages: 2

Dous

XLDnaute Nouveau
Bonjour Dous,
un essai en PJ avec :
Code:
En colonne A :
=SI(NB.SI(Plage!$A$2:$A$100;Synthese!$A$1)>=LIGNE(1:1);Synthese!$A$1;"")
Ensuite :
=SI($A4="";"";INDEX(Plage!B$2:B$100;PETITE.VALEUR(SI(Plage!$A$2:$A$100=Synthese!$A$1;LIGNE(INDIRECT("1:"&LIGNES(Plage!$A$2:$A$100))));LIGNE(1:1))))
A valider par Maj+ctrl+entrée car formules matricielles.
Super merci bcp @sylvanu

Peux-tu m'expliquer ta formule un peu en détail aussi stp, juste pour pas que je copie colle bêtement.

Merci à vous d'être aussi doué et réactif
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En colonne A on répertorie tous les SL par ex. LIGNE permet d'incrémenter le N° de ligne de départ, la formule matriciel fait le calcul sur toute la plage.
Ensuite, dans les autres cellules, INDIRECT permet de reconstruire une plage avec LIGNES qui s'incrémente, on prends le plus petit index trouvé. La formule matriciel permet de scanner toute la plage.
 

Dous

XLDnaute Nouveau
En colonne A on répertorie tous les SL par ex. LIGNE permet d'incrémenter le N° de ligne de départ, la formule matriciel fait le calcul sur toute la plage.
Ensuite, dans les autres cellules, INDIRECT permet de reconstruire une plage avec LIGNES qui s'incrémente, on prends le plus petit index trouvé. La formule matriciel permet de scanner toute la plage.
Okay merci, je vois

Mais est-ce que ça aurait été possible de supprimer la colonne A "Site" dans l'onglet synthèse et de ne démarrer les recherches qu'à partir de le colonne Nom des échantillons en fonction du critère $A$1 (SL) sans pour autant reprendre le nom du site à chaque ligne de la colonne A de l'onglet Synthèse (par exemple A4, A5 et A6) ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si, mais pas avec la PJ précédente puisqu'on se sert de la présence de quelque chose en A pour limiter la liste.
Mais on peut le faire avec un Sierreur qui éliminera les erreurs si non trouvé :
VB:
=SIERREUR(INDEX(Plage!B$2:B$100;PETITE.VALEUR(SI(Plage!$A$2:$A$100=Synthese!$A$1;LIGNE(INDIRECT("1:"&LIGNES(Plage!$A$2:$A$100))));LIGNE(1:1)));"")
Voir PJ.
 

Pièces jointes

  • ESSAI (2).xlsx
    11.3 KB · Affichages: 2

Dous

XLDnaute Nouveau
Si, mais pas avec la PJ précédente puisqu'on se sert de la présence de quelque chose en A pour limiter la liste.
Mais on peut le faire avec un Sierreur qui éliminera les erreurs si non trouvé :
VB:
=SIERREUR(INDEX(Plage!B$2:B$100;PETITE.VALEUR(SI(Plage!$A$2:$A$100=Synthese!$A$1;LIGNE(INDIRECT("1:"&LIGNES(Plage!$A$2:$A$100))));LIGNE(1:1)));"")
Voir PJ.
Ah je vois, c'est clair, en fait c'est des petites subtilités mais il faut aller les chercher. En tout cas bravo et merci encore pour ton aide Sylvanu
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T