Bonjour
Par formules, c'est un peu plus long.
Utilisation de Champs dynamiques (ajustables au nombre de données)
J'ai Nommée Ref la formule
=DECALER('données que j''ai'!$B$2;;;SOMMEPROD(N(NBCAR('données que j''ai'!$B$2:$B$5000)>1)))
En anglais
=OFFSET('données que j''ai'!$B$2;;;SUMPRODUCT(N(LEN('données que j''ai'!$B$2:$B$5000)>1)))
puis utilisé le Nom Ref pour nommer les autres plages utilisées
J'ai donc ensuite Nommée Positif la formule
=DECALER('données que j''ai'!$I$2;;;NBVAL(Ref))
en anglais
=OFFSET('données que j''ai'!$I$2;;;COUNTA(Ref))
et Base le Tableau contenant les données, représenté par la formule
=DECALER('données que j''ai'!$B$2;;;NBVAL(Ref);8)
en anglais
=OFFSET('données que j''ai'!$B$2;;;COUNTA(Ref);8)
L'extraction se fait sur la colonne B
Formule Matricielle en B2 à valider avec les 3 touches Ctrl+Maj+Entrée
=INDEX('données que j''ai'!$B$1:$B$1000;MIN(SI(Positif="Y";SI(NB.SI(B$1:B1;Ref)=0;LIGNE(Ref)))))&""
en anglais
=INDEX('données que j''ai'!$B$1:$B$1000;MIN(IF(Positif="Y";SI(COUNTIF(B$1:B1;Ref)=0;ROW(Ref)))))&""
Le reste du tableau est rempli avec la Formule en C2 incrémentée cers la droite et vers le bas sur tout le tableau restant.
=SI($B2="";"";RECHERCHEV($B2;Base;COLONNE()-1;FAUX))
en anglais
=IF($B2="";"";VLOOKUP($B2;Base;COLUMN()-1;FALSE))
Compte tenu du temps de calcul demandé par les formules matricielles en colonne B, le calcul a été mis "sur ordre" et s'active avec la touche F9
Cordialement