Créer une liste déroulante sans doublons
Bonjour à vous tous,
Voici mon problème, j'aimerais créer une liste déroulante sans doublons. J'ai fais plusieurs recherches sur les forums, j'ai essayé des formules, mais sans résultats concluant...
Si un bon samaritain voudrais me donner un petit coup de main, j'apprécierais grandement !!!Vous trouverez mon fichier en pièce jointe.
Je cherche à faire une liste déroulante sans blancs ni doublons en R4 à R…(infini).
Option 1: Je voudrais faire afficher dans cette liste la colonne B de la feuille "Produit existant" avec un code VBA
Option 2: Indiquer dans la colonne C le résultat de la colonne B sans doublon. Ensuite, faire en R4 Donnés, Validation --->Autoriser Liste et indiquer dans source ='Produit Existant'!$C$3:$C$9
Je préfère l'option 1, mais plus compliqué...
J'ai l'habitude de vouloir trouver la solution moi même, mais la je ne sais plus ou donner de la tête
Bonjour
J'ai changé la formule d'extraction sans doublons Colonne C et nommée Liste_Uniques la source de validation de liste déroulante. Voir le détail de la formule nommée Liste_Uniques
=DECALER('Produit Existant'!$C$3;;;SOMMEPROD(N(NBCAR('Produit Existant'!$C$3:$C$1000)>0)))Cordialement
Bonjour Amadéus,
Merci pour la modification de la formule. J'aimerais que tu m'expliques quelques petites chose afin que je puisse faire la manipulation par moi même dans le futur.
Pour quelle raison lorsque je modifie la formule dans la colonne C de la feuille produit existant pour afficher tous les résultats, il affiche toujours le même résultat, soit le premier...
Présentement la formule est :
=INDEX($B:$B;MIN(SI(NB.SI(C$2:C2;$B$3:$B$58)=0;LIGNE($B$3:$B$58))))&""
Mais si je marque par exemple, ceci,
=INDEX($B:$B;MIN(SI(NB.SI(C$2:C2;$B$3:$B$999)=0;LIGNE($B$3:$B$999))))&""
Merci beaucoup. j'apprécie votre aide !
Amadéus a écrit :Bonjour
J'ai changé la formule d'extraction sans doublons Colonne C et nommée Liste_Uniques la source de validation de liste déroulante. Voir le détail de la formule nommée Liste_Uniques
=DECALER('Produit Existant'!$C$3;;;SOMMEPROD(N(NBCAR('Produit Existant'!$C$3:$C$1000)>0)))Cordialement
-- Mar Mai 10, 2011 11:21 am --
Ahhh j'ai compris que je dois faire CTRL+Majuscule+ENTER...
Je viens de comprendre aujourd'hui qu'il y avait pas seulement les formules de bases, mais aussi des formules matricielles...
J'ai des devoirs à faire j'ai l'impression pour comprendre tout ça !
Merci énormément pour la réponse.
Bonjour
Je suis parti pensant que la liste était définitive.
Si elle est évolutive, il vaut mieux, dans la formule matricielle en colonne C utiliser un Champ dynamique en nommant le champ de la colonne B.
Ici, la formule
=DECALER('Produit Existant'!$B$3;;;NBVAL('Produit Existant'!$B:$B)-1)est nommée Code et représente le champ occupé (et évolutif) de la colonne B
Puis, en C3, la formule matricielle devient
=INDEX($B:$B;MIN(SI(NB.SI(C$2:$C2;Code)=0;LIGNE(Code))))&""Ceci est appliqué sur le classeur Sans doublons_V2.xls
En apparté du sujet, les formules matricielles sont souvent sources d'erreurs suite au fait que leur manipulation ou effacement fait qu'on oublie parfois la saisie matricielle Ctrl+Maj+Entrée.
Il existe bien sur la possibilité de protèger ces formules, mais la protection bloque souvent autre chose.
Les formules matricielles peuvent être nommées de façon NON matricelle et le nom donné à la formule les remplace en se débarrassant du problème de la saisie matricielle.
Sur ce fichier, j'ai nommé Formule la formule matricielle (à peine modifiée pour bloquer l'affichage de valeur d'erreur )en C3 (Important de sélectionner C3 pour procéder car c'est la première ligne contenant la formule)
=SI(ESTERREUR(INDEX('Produit Existant'!$B:$B;MIN(SI(NB.SI('Produit Existant'!C$2:$C2;Code)=0;LIGNE(Code)))));"";INDEX('Produit Existant'!$B:$B;MIN(SI(NB.SI('Produit Existant'!C$2:$C2;Code)=0;LIGNE(Code)))))La formule en colonne C devient en saisie normale.
=Formule
Ceci est appliqué sur le classeur Sans doublons_V3.xls
Cordialement
Un grand merci pour toutes ces informations pertinentes !!!
J'apprécie énormément !!!
Amadéus a écrit :Bonjour
Je suis parti pensant que la liste était définitive.
Si elle est évolutive, il vaut mieux, dans la formule matricielle en colonne C utiliser un Champ dynamique en nommant le champ de la colonne B.
Ici, la formule
=DECALER('Produit Existant'!$B$3;;;NBVAL('Produit Existant'!$B:$B)-1)est nommée Code et représente le champ occupé (et évolutif) de la colonne B
Puis, en C3, la formule matricielle devient
=INDEX($B:$B;MIN(SI(NB.SI(C$2:$C2;Code)=0;LIGNE(Code))))&""Ceci est appliqué sur le classeur Sans doublons_V2.xls
En apparté du sujet, les formules matricielles sont souvent sources d'erreurs suite au fait que leur manipulation ou effacement fait qu'on oublie parfois la saisie matricielle Ctrl+Maj+Entrée.
Il existe bien sur la possibilité de protèger ces formules, mais la protection bloque souvent autre chose.
Les formules matricielles peuvent être nommées de façon NON matricelle et le nom donné à la formule les remplace en se débarrassant du problème de la saisie matricielle.
Sur ce fichier, j'ai nommé Formule la formule matricielle (à peine modifiée pour bloquer l'affichage de valeur d'erreur )en C3 (Important de sélectionner C3 pour procéder car c'est la première ligne contenant la formule)
=SI(ESTERREUR(INDEX('Produit Existant'!$B:$B;MIN(SI(NB.SI('Produit Existant'!C$2:$C2;Code)=0;LIGNE(Code)))));"";INDEX('Produit Existant'!$B:$B;MIN(SI(NB.SI('Produit Existant'!C$2:$C2;Code)=0;LIGNE(Code)))))La formule eb colonne C devient en saisie normale.
=Formule
Ceci est appliqué sur le classeur Sans doublons_V3.xls
Cordialement