Bon ! Je suppose que tu connais la syntaxe de la fonction INDEX appliquée à une plage constituée par une seule colonne :
=INDEX(PlageColonne;IndexLigne)
Sinon l'Aide t'apprendra tout sur ces aspects élémentaires... !
L'insertion dans une fonction SIERREUR à pour objet d'empêcher l'affichage d'erreurs lorsque plus rien à afficher.
Reste donc la fonction PETITE.VALEUR utilisée pour déterminer l'indexLigne de la fonction INDEX dans la formule :
PETITE.VALEUR(SI(General!$E$3:$E$20;LIGNE(General!$E$3:$E$20);"");LIGNE(1:1))
L'expression correspond à la syntaxe : PETITE.VALEUR(Matrice;k)
k est le range de la valeur cherchée, défini dans l'expression par LIGNE(1:1), qui renvoie 1, mais étant en référence relative, renverra lors de la recopie de la formule sur les lignes suivantes : 2, 3, 4; et ainsi de suite...
La partie Matrice est donc renvoyée par une fonction SI :
condition : General!$E$3:$E$20
Cette plage ne contient que soit 1, soit rien, on fait donc l'économie de rajouter =1.
Si la cellule de la plage contient 1 la condition sera VRAI, si rien elle sera FAUX.
valeur si VRAI : LIGNE(General!$E$3:$E$20)
si la condition est vraie, le numéro de ligne sera renvoyé
valeur si FAUX : ""
se passe de commentaire.
Donc la matrice soumise à PETITE.VALEUR sera une matrice de 18 valeurs constituée par un numéro de ligne de 3 à 20 (si 1 dans la plage) ou "" (si rien).
Tu notes qu'utilisant SI pour renvoyer une matrice et non une valeur unique, c'est cela qui oblige à une validation matricielle de la formule.
Dans la matrice nous trouverons donc les valeurs 3 et 5 parmi des "" puisqu'il n'y a que deux 1 sur ces lignes.
Donc l'expression PETITE.VALEUR... renverra 3 sur la première ligne, 5 sur la seconde ligne et une erreur sur les suivantes.
INDEX appliqué à la colonne A, renverra la valeur de A3 sur la première ligne formule, et celle de A5 sur la seconde.
Cordialement.