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!!