Re : Lsiter valeurs colonne
Bonsoir
Celle là, je l'ai comprise car je m'en sers souvent !!!
Alors, voilà, avec mon charabia
=INDEX('F1'!A$1:A$50;MIN(SI(NB.SI(B$1:B1;'F1'!A$2:A$50)=0;SI('F1'!A$2:A$50<>"";LIGNE('F1'!A$2:A$50)))))&""
INDEX('F1'!A$1:A$50 renvoie une valeur prise dans la plage 'F1'!A$1:A$50 sur la ligne x déterminée avec les données suivantes :
NB.SI(B$1:B1;'F1'!A$2:A$50)=0 compte le nombre de contenu de B1 rencontré dans la plage 'F1'!A$2:A$50. Si ce NB.SI est égal à zéro, c'est que B1 n'a pas encore été rencontré et qu'il va falloir tenir compte de toutes les valeurs de la plage A2:A50 (puisqu'elles sont toutes nouvelles).
SI('F1'!A$2:A$50<>"" :
SI A2 <> "", on retient le numéro de la ligne de A2, donc 2, puis on fait le test avec A3, et ainsi de suite (puisqu'il s'agit d'un calcul matriciel).
On obtient donc une liste de numéro de ligne. On ne retient que le min de cette liste, c'est à dire le numéro de la première ligne différente de B1 dans la plage A2:A50.
A la ligne suivante, on a
=INDEX('F1'!A$1:A$50;MIN(SI(NB.SI(B$1:B2;'F1'!A$2:A$50)=0;SI('F1'!A$2:A$50<>"";LIGNE('F1'!A$2:A$50)))))&""
INDEX('F1'!A$1:A$50 renvoie une valeur prise dans la plage 'F1'!A$1:A$50...
SI(NB.SI(B$1:B2;'F1'!A$2:A$50)=0 compte le nombre de contenu de B1 rencontré dans la plage A2:A50 puis fait le même boulot que précédemment (si = 0....)
puis compte le nombre de contenu de B2....
Un exemple en pièce jointe pour montrer le role de la cellule B1.
Faire très attention, avec cette méthode, le $ de B$1:B1 est très important. Il permet de faire le test dans tout le haut de la colonne B. En B20 pa rexemple, on fera le test avec toutes les textes de B1 à B19.
La formule complète, en B20 par ex, permet donc de ne pas prendre en compte les lignes de A2:A50 contenant des textes déja écrits dans B1:B19 (d'où élimination des doublons), donc de ne retenir que celles contenant des "nouveautés", puis finalement de ne garder que la première de cette ligne.
@ plus