Bonjour,
SIERREUR(INDEX(Tableau1[débit];PETITE.VALEUR(SI((Tableau1[libellé]=Gestion!A$4)*(MOIS(Tableau1[date])=1)>0;LIGNE(Tableau1[date]);9^9);LIGNE()-7)-4);"")
le SIERREUR est simple : si l'on ne trouve rien cela engendre une erreur, si erreur on affiche rien.
Reste : INDEX(Tableau1[débit];PETITE.VALEUR(SI((Tableau1[libellé]=Gestion!A$4)*(MOIS(Tableau1[date])=1)>0;LIGNE(Tableau1[date]);9^9);LIGNE()-7)-4)
On commence par PETITE.VALEUR qui travaille sur une matrice (ou "plage de données"), ici on va fabriquer cette matrice en fonction d'un double test :
SI premier test * deuxième test alors LIGNE, sinon 9^9
Le fait de multiplier les tests permet de faire soit 0x0; 0x1, 1x0 ou 1x1, car sous Excel un test "vrai" =1, un test faux = 0.
Donc on a SI Vrai (1x1)>0 (autant le >0 n'est pas utile pour la même raison que 1=vrai et 0 = faux) alors LIGNE(du tableau source), si faux alors on a 9 puissance 9 soit 387420489.
Ceci est une formule matricielle, ce qui donne une matrice de PETITE.VALEUR qui aura pour valeur soit un numéro de ligne du tableau source soit la "grande valeur 387420489", mais de cette matrice on veut extraire la première petite valeur pour afficher la première dépense pour téléphone du mois de janvier. L'astuce est de créer un compteur variable qui permet d'incrémenter cette donnée de 1 dès que l'on est sur la ligne du dessous, donc on met pour la première valeur la donnée LIGNE() qui renvoi le numéro de ligne de la feuille Excel où se trouve la formule, dans votre cas cela renvoie 8, mais on ne veut pas la 8ième petite valeur mais la première, donc on soustrait 7, et on a bien 1 au résultat, en ligne 9 on demandera 9-7=2 la deuxième petite valeur etc...
Donc on se retrouve avec PETITE.VALEUR qui nous donne un numéro de ligne où la condition Mois et Type de dépense est vrai.
Avec INDEX on va récupérer dans la colonne date de votre tableau source la valeur se trouvant à ce numéro de ligne, mais comme les données dans votre tableau ne commence pas en ligne 1 mais en ligne 5, pour avoir la donnée en ligne 1 de l'INDEX, qui lui cible la colonne de données sans prendre en compte l'entête du tableau ni les lignes qui se trouvent au dessus, nous somme bien obligés de retirer 4 à la valeur renvoyée par PETITE.VALEUR : 5-4 = 1 première ligne de la colonne Date du tableau, premier index de la référence INDEX.
J'avoue qu'en mettant LIGNE(Tableau1[date]), j'avais espoir que cela donne l'index de la donnée dans le tableau, mais LIGNE() renvoi bien le numéro de ligne de la feuille et non pas de la plage. Le -4 pourrait se trouvé à cet endroit : LIGNE(Tableau1[date])-4
Voilà en espérant avoir été suffisamment clair, n'hésitez pas si besoin.
@ bientôt
LouReeD