C'est la formule classique d'une liste conditionnelle.
=SIERREUR(INDEX(data!$C$3:$T$3;PETITE.VALEUR(SI((data!$C$4:$T$4<>1)+(GAUCHE(data!$C$3:$T$3;4)="blet");COLONNE($C$4:$T$4)-2);COLONNES($A:A)));"")
sierreur() quand il n'y a plus rien a trouver.
(data!$C$4:$T$4<>1)+(GAUCHE(data!$C$3:$T$3;4)="blet")
Conditions de recherche
COLONNE($C$4:$T$4)-2) index de plage de recherche
On est dans une formule matricielle
la condition va donner une matrice genre {vrai;vraii;faux;vrai; etc...} en fonction des valeurs de la ligne 3 et de la ligne 4
COLONNE($C$4:$T$4)-2)
ça te donne aussi une matrice {3;4;5;etc..}-2==>{1;2;3;etc..}
tout ça avec la condition te donne aussi une matrice {faux;2;faux;faux;5; etc...)
donc, pour avoir la 1 ère valeur qui a été trouvée (2 dans mon exemple), je recherche la première petite valeur
Cette première petite valeur , c'est petite.valeur(matrice;rang)==>2
Donc la valeur cherchée est index(plage;2).
comme j'étire la colonne a droite, il faut que le rang change a chaque cellule.
C'est le rôle de colonnes($a:a) (tu remarques la place des $) qui devient colonnes($a:b) dans la cellule consécutive.
On tire jusqu’à épuisement, le sierreur donnant un "" quand il n'y a plus rien, (d'ou valeur!)
Voili,Voilou!
Si tu voulais la liste en colonne, on aurait utilisé ligne() et lignes(), a la place de colonne.
Potasse petite.valeur() dans l'aide, ligne() et colonnes()
Crdlmt