Alors, c'est "assez" simple sur le papier :
Il faut isoler la ligne de chaque personne, une fois que tu l'as, il faut compter chaque type d'absence dans la ligne.
Donc pour isoler chaque ligne de chaque personne on va se servir de filter :
=FILTER(B5:AF18;A5:A18=E26)
Là je demande d'afficher dans la plage B5:AF18 la ligne où la donnée en A5:A18 est égal ce qui est noté en E26.
Donc, j'ai ma ligne de donnée correspondant au nom en E26, maintenant on doit compter les types d'absences, qui sont listées en G25:N25
Pour ce faire on va juste imbriquer un NB.SI( filter(...) ; =G25)
ainsi, on aura le nombre de A1 pour LBD.
Sauf que là, on a une formule qui fonctionne pour E26 et G25, il faut faire toutes les combinaisons, une premiere solution, serait de bien ancrer les plages, pour faire glisser dans le tableau, voici la solution, à mettre en G26 et à faire glisser :
=NB.SI(FILTER($B$5:$AF$18;$A$5:$A$18=$E26);G$25)
Mais, c'est chiant et pas dynamique, on peut rendre ça dynamique, avec une seule formule en G26, la voici :
=MAP(E26:E37; LAMBDA(nom; MAP(G25:N25; LAMBDA(abs; NB.SI(FILTER($B$5:$AF$18; $A$5:$A$18=nom); abs)))))