Bonjour
Comme toujours, une explication des formules imbriquées est un peu longue. Mais, si un point t'échappe, nous pourrons y revenir
Les fonctions de recherche, RECHERCHEV que tu utilisais, ou INDEX-EQUIV s'arrêtent à la premiere ligne contenant le résultat recherché.
Pour obtenir les résultats suivants avec la méthode utilisée dans mon fichier:
On cherche la première référence trouvée par INDEX-EQUIV.
Pour 10112, la premiére ligne contenant 10112 est la ligne 7 qui compte tenu du fait que les données commencent à la ligne 6 correspond en fait à la ligne 2 de la "table" contenant les données. table=$A$6:$J$24.
Première ligne
Ex en A30
=SI($K30="";"";INDEX(DECALER(table;$K29;);EQUIV($B$30;DECALER($B$6;$K29;):$B$24;0);COLONNE()))
oublions pour l'instant le début. Pour rechercher dans la table la première valeur correspondant à 10112, on écrit:
=INDEX(table;EQUIV($B$30;$B$6:$B$24;0);COLONNE()))
qui renvoie 361000002 et là se termine la recherche. Impossible donc de trouver les résultats suivants correspondants à 10112.
L'astuce consiste à redemarrer la recherche après le résultat trouvé, donc à DECALER le champ de recherche pour trouver la valeur suivante, et ici intervient le No de ligne de la table donnant le résultat.
Donc, en première ligne, nous aurions en K30 pour chercher la première ligne qui contient 10112
=LIGNE(INDEX(table;EQUIV($B$30;$B$6:$B$24;0);2))
qui renvoie 7 soit la ligne 2 de la table comme indiqué au début.
Nous éliminons donc les 2 premières lignes de la table et commençons la nouvelle recherche en A31 non plus sur $A$6:$J$24, mais sur $A$8:$J$24
La définition de cette nouvelle table de recherche est donnée par la formule
=DECALER(Table;2;)
et le résultat cherché est dans le vecteur
=DECALER($B$6:$B$24;2;)
soit
=DECALER($B$6;2;):$B$24
et ainsi de suite
donc en A31, pour trouver la seconde valeur correspondant à 10112 (si elle existe)
=INDEX(DECALER(table;2;);EQUIV($B$30;DECALER($B$6;2;):$B$24;0);2)
Comme le décalage à appliquer est en K30, nous écrivons
=INDEX(DECALER(table;$K30;);EQUIV($B$30;DECALER($B$6;$K30;):$B$24;0);2))
et en définitive
=SI($K31="";"";INDEX(DECALER(table;$K30;);EQUIV($B$30;DECALER($B$6;$K30;):$B$24;0);COLONNE()))
parce que en K31, nous avons prévu que s'il n'y a plus de ligne correspondant à 10112, le résultat est rien ("")
Cordialement