Bonsoir
Alors, quelques explications
Dans A91, on a =SIERREUR(SI(NB.SI(A$90:A90;A90)<ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4);A90;INDEX(A$3:A$78;EQUIV(A90;A$3:A$78;0)+1));"")
Donc dans A91, NB.SI(A$90:A90;A90) compte le nombre de d'éts1 rencontrés depuis la ligne 90 (ce qui donne 1 bien sûr).
DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); ) donne la plage de A à V correspondant à l'éts1, donc A$3:V$3.
NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"") compte le nombre de cellules de cette ligne contenant du texte
NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1 pour éliminer la colonne A
(NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4 parce que tu as 4 colonnes par participant
ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4) par précaution, ENT donnant la partie entière du rapport dans les parenthèses.
Donc si NB.SI(A$90:A90;A90) est < ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4), c'est qu'on a pas encore écrit assez de ligne pour l'éts1, donc on écrit
SI(NB.SI(A$90:A90;A90)<ENT((NB.SI(DECALER(A$2:U$2;EQUIV(A90;A$3:A$78;0); );"><"&"")-1)/4);A90
Sinon, on va chercher l'établissement suivant sur la liste avec INDEX(A$3:A$78;EQUIV(A90;A$3:A$78;0)+1), suivant à cause du +1.
Et le SIERREUR(.....;"") pour avoir des cellules vides en bas de la colonne A, lorsqu'on a écrit assez de ligne.
Dans B91, =SI(A90="";"";DECALER(B$2;EQUIV($A90;$A$3:$A$78;0);(NB.SI($A$90:$A90;$A90)-1)*4))
Avec DECALER, "On" se positionne dans B$2.
EQUIV($A90;$A$3:$A$78;0) va chercher la position de A90 dans la liste A3:A78, et Excel se décale à partir de B2 de autant de ligne. Pour Ets1, cela donne 1, donc "on" arrive dans B3.
(NB.SI($A$90:$A90;$A90)-1)*4 donne le nombre de colonnes du décalage à faire, 0 sur la première ligne de l'étsx (donc on obtient comme résultat le texte contenu dans B3), 4 sur la seconde (donc... le texte de la colonne F), 8 sur la troisième...
@ plus