menu déroulante sans doublons

wajih_Excel

XLDnaute Occasionnel
Salut Forum
Je voudrais afficher le contenu SANS DOUBLONS d'une colonne dans une liste déroulante sur formulaire sachant que j'utilise Excel 2007.
Merci d'avance
En PJ un Exemple
 

Pièces jointes

  • menu déroulante.xls
    17 KB · Affichages: 67
  • menu déroulante.xls
    17 KB · Affichages: 63
  • menu déroulante.xls
    17 KB · Affichages: 65

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : menu déroulante sans doublons

Bonjour,

Listes sans doublons triée

0,1 sec pour 5.500 lignes

Code:
Private Sub UserForm_Click()
Private Sub UserForm_Initialize()
  Set f = Sheets("Feuil1")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))
    If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  temp = MonDico.items
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox1.List = temp
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
        temp = a(g): a(g) = a(d): a(d) = temp
        g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)
End Sub

JB
 

Pièces jointes

  • Copie de menu%20déroulante(1).zip
    40.3 KB · Affichages: 39
Dernière édition:

Nikless

XLDnaute Junior
Re : menu déroulante sans doublons

David,
Si tu utilise SommeProd tu dois definir la plage. Tu ne peux pas mettre la ou les colonnes en entier.
On utilise la meme methode qui me parait etre tres performante.

Je retire ce que jai dis on n'utilise pas la meme methode !!
Je suis pas tout a fait convainu par la tienne... Ya un truc a revoir. Je te fais part de mes avancees.

Cdt
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : menu déroulante sans doublons

Re;
"David,
Si tu utilise SommeProd tu dois definir la plage. Tu ne peux pas mettre la ou les colonnes en entier.
On utilise la meme methode qui me parait etre tres performante."
Bonjour Nikless,
de quelle plage parles-tu ?
Ma liste est pourtant définie...et cela fonctionne.
Par contre, sur mon PC, c'est lent...
Qu'est-ce que cela donne sur le tien ?
 

Nikless

XLDnaute Junior
Re : menu déroulante sans doublons

Bonsoir David,
Je parlais de la plage "liste" en Col. C
Voici comment je l'ai redéfini (tu remarqueras que c'est nettement plus rapide):
=DECALER(Feuil1!$C$2;;;SOMMEPROD((Feuil1!$C1:$C18<>"")*1))

L'ennui c'est que ça va aussi afficher une valeur "Null" ce qui n'est pas indispensable.
Regarde mon fichier et compare avec ma manière de faire apparaître les valeurs uniques.

Bonne soirée à tous
 

david84

XLDnaute Barbatruc
Re : menu déroulante sans doublons

Bonsoir Nikless,
J'ai pris ton fichier et ai recopié ta manière de faire et la mienne afin de comparer la vitesse sur le même fichier.
Je n'ai rien modifié dans la définition de ma liste, excepté le nombre de cellules sélectionnées dans la colonne A (j'ai sélectionné les 200 premières comme tu l'as fait de ton côté afin de comparer sur les mêmes bases).
Pour voir, j'ai ensuite repris ma façon de faire en retouchant la validation des données comme tu me l'avais conseillé.
Rentre des données colonne A et dis-moi si tu remarques à l'œil nu une différence...
De plus, je te fais remarquer que j'économise une colonne puisque je n'ai pas besoin de la colonne "compteur" que tu utilises.
Fais le test de ton côté et dis-moi ce qu'il en est.
Bonne nuit
 

Pièces jointes

  • Copie de Validation dynamique v.2.xls
    27.5 KB · Affichages: 65

Nikless

XLDnaute Junior
Re : menu déroulante sans doublons

Bonjour le fil,
dans ces conditions je reconnais que les 2 methodes sont aussi rapides l'une que l'autre.

Ma methode est peut etre plus gourmande en colonnes et les formules plus longue mais la tienne utilise une fonction matricielle. Le tout est une affaire d'affinite !

Verdict : ex aequo !
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa