Compléter une formule matricielle INDEX EQUIV avec un critère (et qques explications...)

Gdal

XLDnaute Nouveau
Bonjour,

Je cherche à compléter une formule permettant de rechercher dans un tableau (une base de données) les affaires suivant un critère de date (N° de semaine), et de remplir une colonne avec les résultats.
La formule (matricielle) actuelle, trouvée sur un forum:
Code:
=SIERREUR(INDEX(Tableau1[Prj1_Affaire];EQUIV(PETITE.VALEUR(SI((NB.SI(B$8:B8;Tableau1[Prj1_Affaire])=0)*(Tableau1[Prj1_Affaire]<>"");NB.SI(Tableau1[Prj1_Affaire];"<"&Tableau1[Prj1_Affaire]));1);SI(Tableau1[Prj1_Affaire]<>"";NB.SI(Tableau1[Prj1_Affaire];"<"&Tableau1[Prj1_Affaire]));0));"")
Elle ne permet pas la recherche sur un critère :-(.

Pourriez-vous m'indiquer comment la modifier et surtout me fournir quelques explications afin de pouvoir la réutiliser, svp!

Merci d'avance,

Gdal
 

Pièces jointes

  • Hrs bis.xlsx
    25.1 KB · Affichages: 33

Boo2bafoot

XLDnaute Nouveau
Bonsoir Gdal, bonsoir le forum,

Je ne suis pas compètement certain d'avoir compris sur ton fichier les données que tu cherches à extraire.
Du coup, je me suis permis de te créer une formule sur ton 1er onglet qui te permet d'afficher pour un numéro de semaine donné TOUS tes Prj1_Affaire (mais cela peut être une autre colonne) pour cette semaine.
Du coup, il n'est pas très compliqué par la suite, avec cette donnée et ton numéro de semaine, de trouver les valeurs que tu veux y associer.

Je te mets le fichier en PJ et commente la fonction que j'utilise dans ces cas là qui n'est pas une fonction matricielle.

Code:
SI(LIGNES($M$7:M7)>NB.SI(Tableau1[Prj1_Nsem];$N$4);"";INDEX(Tableau1[Prj1_Affaire];AGREGAT(15;6;(LIGNE(Tableau1[Prj1_Nsem])-LIGNE($B$5)+1)/(Tableau1[Prj1_Nsem]=$N$4);LIGNES($M$7:M7))))

Ton critère est ici le numéro de semaine, j'utilise donc le bout de formule :

(Tableau1[Prj1_Nsem]=$N$4)
qui me renvoie une matrice de VRAI ou de FAUX

je cherche la position relative (leurs lignes) de ces VRAI et les FAUX dans ma matrice avec les fonctions Ligne
soit (LIGNE(Tableau1[Prj1_Nsem])-LIGNE($B$5)+1 qui me renvoie une matrice {1;2;3;.....}

En divisant cette matrice par mon critère, j'ai donc une matrice de type {1;#DIV/O;3;#DIV/0;......}
Les données numériques de cette matrice sont les positions relatives des lignes pour lesquelles mon critère est vérifié. S'il ne l'est pas, celà revient à diviser un nombre par un FAUX (soit un 0).
J'intègre ça dans une fonction AGREGAT qui utilise la fonction PETITE.VALEUR (le n°15 de AGREGAT en 1ère option) et qui ignore les erreurs (le 6 du 2ème segment de la fonction AGREGAT) et en k, le numéro de la ligne de ma cellule par rapport à la 1ère de ma plage (en 1ère ligne de ma plage =>1, en second=>2, etc.... grace à lignes($M$7:M7) en argument k de la fonction PETITE VALEUR de ma fonction aGREGAT.

J'intègre du coup ces positions relatives dans une fonction INDEX et le tour est joué que j'étire vers le bas et le tour est joué :
en 1ère ligne, j'aurai ainsi les données de la 1ère ligne de ma matrice où mon critère est vérifié.
en 2ème, celles de la 2ème ligne où le critère est vérifié (qui n'est pas nécessairement la 2nde ligne de ma base), etc....

J'intégre ça dans une fonction SI. Si la position relative de la ligne sur laquelle j'ai ma formule dans ma plage est supérieure au nombre d'occurences de mon critère (ici le nombre de fois que mon numéro de semaine apparaît dans ma base), la formule renvoie "", sinon elle me renvoie le résultat de ce que j'expliquais plus haut.

Espérant que ça t'aidera un peu.
Bonne soirée[/code]
 

Pièces jointes

  • Hrs bis.xlsx
    27.6 KB · Affichages: 42

Discussions similaires