LISTE DEROULANTE "QUI S'USE QUAND ON S'EN SERT"

Bonjour!

Je suis à la recherche d'une "formule magique" qui me permettrai sous excel "d'user ma liste déroulante"...

Je m'explique: j'ai une liste de clients bien rangés dans une liste déroulante (créée avec "Validation"). Je voudrai qu'une fois que mon client est selectionné, je ne le retrouve pas la dans la liste la ligne d'après...

Ex:

A1 : liste avec client C1, C2, C3, C4 -> je selectionne C1

A2 : la liste devient: C2, C3, C4

Etc jusqu'à épuisement de la liste

En esperant que quelqu'un puisse me répondre, je vous souhaite une bonne fin de journée!

pol

Bonsoir

Il faut passer par une colonne intermédiaire et adapter le tableau

A1 doit être vide

Ligne 2 les titres

Lignes 3 à 18, les données en A (Les clients), les Formules en B(Initie la validation des Liste sans doublon), les Validations en C.

1) Nommer la liste Sans doublons (des clients)

Commande de menu "Insertion" "Nom" Définir" et par exemple (c'est original) "Clients"

Référe à $B$3:$B$18

2) Nommer la plage de validation (ici ListeChoix)

3) Formule en B3:Matricielle à incrémenter jusqu'au bas du tableau et à valider avec les 3 touches Ctrl+Maj+Entrée.

{=INDEX(A$1:A$18;MIN(SI(NB.SI(B$2:B2;A$3:A$18)=0;SI(NB.SI(ListeChoix;A$3:A$18)=0;SI(A$3:A$18<>"";LIGNE(A$3:A$18))))))&""}

4) Validation de C3 à C18

Commande de menu "Données" "Validation" onglet "Option"

Autoriser "Liste"

Dans "Source", entrer la formule

=DECALER(Clients;;;SOMME((Clients<>"")*1))

Remarque: La colonne B peut être masquée.

Fichier modèle joint

Cordialement,

Amadéus

https://www.excel-pratique.com/~files/doc/ListesansDoublons.xls

Edit admin : pense à désactiver les smilies (ou utiliser code) pour ne pas t'embêter. Cordialement.

Bonjour tout le monde

Amadéus, ta formule est bonne, mais elle peut-être simplifiée.

° SI(A$3:A$18<>"";LIGNE(A$3:A$18), avec ceci tu testes si la valeur de la cellule n'est pas vide, ce n'est pas la peine. Après avoir épuisé toutes les cellules contenant une donnée, la matrice contiendra systématiquement les N° des cellules vides, ce qui affiche une ligne vide.

° Pour diminuer le nombre de caractères de ta formule

LIGNE(A$3:A$18) peut devenir LIGNE($3:$18), avec la fonction LIGNE, les valeurs des colonnes sont écartées.

=INDEX(A$1:A$18;.......) peut être écrit =INDEX(A:A;.......), ce n'est pas un problème puisque la valeur retournée par MIN n'est pas une matrice

La voilà simplifiée à l'extrème.

=INDEX(A:A;MIN(SI(NB.SI(B$2:B2;A$3:A$18)=0;SI(NB.SI(ListeChoix;A$3:A$18)=0;LIGNE($3:$18)))))&""

Pour ma part, je préfère remplacer NB.SI() par ESTNA(EQUIV()) qui demande moins de ressource (temps de calcul), NB.SI devant tester toutes les cellules de la plage, à l'inverse de EQUIV qui dès qu'il a trouvé la valeur stop.

Formule à base ESTNA(EQUIV())

=INDEX(A:A;MIN(SI(ESTNA(EQUIV(A$3:A$18;ListeChoix;0));SI(ESTNA(EQUIV(A$3:A$18;B$2:B2;0));LIGNE($3:$18);""))))&""

Bonne journée

@+Jean-Marie

PS : Merci pour l'astuce de désactivation des smiles

Bonjour Jean Marie, bonjour à tous

Je te reconnais bien! Ce n'est pas pour rien que tu écris!

Je m'incline. Je ne suis pas très fort dans ce genre de formule, ce qui fait que dorénavant, j'utiliserai la tienne, avec ta permission bien sur!

Merci.

Bon Week-end

Amadéus

Merci beaucoup je n'aurai jamais pensé à tout ca! il ne me reste plus qu'à essayer maintenat!!

Rechercher des sujets similaires à "liste deroulante qui use quand sert"