Bonjour,
En F3, MIN(SI(NB.SI(F$2:F2;List)=0;LIGNE(List)))
renvoie le n° de la 1ère ligne (Min) de la plage 'List'
MIN(LIGNE(List)) renverrait la même chose, mais cette formule permet le copié-collé sans modif
INDEX(ListCol;MIN(SI(NB.SI(F$2:F2;List)=0;LIGNE(List))))&''
renvoie le contenu, dans la plage 'ListCol', de la 1ère ligne
(Ligne de la feuille, pas ligne de la plage)
Copiée-collée en F4, ça donne :
INDEX(ListCol;MIN(SI(NB.SI(F$2:F3;List)=0;LIGNE(List))))&''
renvoie le contenu, dans la plage 'ListCol', de la 2ème ligne de la plage 'ListCol'
mais… 2ème ligne à condition que F2:F3 ne contienne pas déjà une valeur de 'List'
NB.SI(F$2:F3;List)=0
MIN(SI(NB.SI(F$2:F3;List)=0;LIGNE(List)))
Si on veut, cette formule fait référence à 'List' sauf les valeurs contenues en F2:F3
INDEX(List;10)
renvoie le contenu de la cellule située en 10ème position de 'List'
INDEX(ListCol;ligne(10))
renvoie le contenu de la cellule située en 10ème ligne de 'ListCol'
C'est là où est la feinte
List démarre en ligne 2 ou 3 ou autre,
ListCol démarre en ligne 1
MIN(SI(NB.SI(cellules du dessus;List)=0;LIGNE(List)))
finit par renvoyer 0 quand toute la liste est épuisée
INDEX(Plage;0)
renvoie #VALEUR! si on valide par 'Entrée'
renvoie le contenu de la 1ère cellule si on valide par ctrl, maj et entrée
Moralité : on laisse la ligne 1 vide
INDEX(ListCol;0) renvoie 0 si la cellule en ligne 1 est vide
INDEX(ListCol;0)&'' renvoie ''
et ça évite une formule conditionnelle à rallonge
En voyant la formule, on peut supposer que 'List' n'a pas de cellules vides
Si elle en avait, il faudrait ajouter une condition :
INDEX(ListCol;MIN(SI(NB.SI(F$2:F2;List)=0;SI(List différent de '';LIGNE(List)))))&''
(tu remplaces 'différent de' par les signes 'Sup' et 'Inf')
Je ne sais pas si c'est clair ?