re
pas facile mais
1) nommer ou renommer les plages pour ne pas avoir à mouliner des millions de lignes
2) j'ai commencé par extraire les noms de client afin d'avoir un critère
3) en dessous , la formule "tordue" crée des plages sous forme de texte qui sera utilisé par INDIRECT
exemple : pour client 1
on sait que Equiv renvoie toujours la 1ere position d'un client (ici c'est 1) ,le plus dur c'est de trouver la fin de sa plage .....
Heureusement , EQUIV (colonne des clients ; colonne des clients , 0) renvoie la position de tout les clients , il n'y a plus qu' a determiner la position immédiatement supérieure (celle de client 2) grace à MIN( si..........) et d'y oter 1 pour la fin de cette plage
cela donne pour faire le texte qui decrit la plage : la lettre & la position du critère &": la lettre" et la position immediatement superieure trouvée (le MIN) -1
C1:C6 est converti en zone de coordonnées exploitables grace à Indirect dans NB.SI selon le critère "oui"
astuce pour le dernier client qui n'a pas de suivant
son Min correspondra à 0 donc on utilise le nb de lignes effectives de la colonne des clients ,ici , c'est 24
néanmoins
l'ideal eût été d'indiquer le nom du client à chaque ligne ,,,,, ou de faire une colonne (amasquer) avec une formule qui bouche les trous que voila
=SI(LIGNE(A1)>LIGNES(client);"";INDEX(client;SOMMEPROD(MAX((A$1:A1<>"")*(LIGNE(A$1:A1))))))
a tirer vers le bas