Bonjour à tous,
Je suis relativement novice concernant la programmation en VBA.
J'ai crée un Userform composé d'une liste déroulante (combobox). Or cette liste contient des doublons. Je souhaite que chaque item n'apparaisse qu'une seul fois.
J'ai déjà vu pas mal de code sur internet concernant ce problème, mais impossible de l'appliquer dans mon cas (erreur de prog. surement).
Quelqu'un peut-il m'aider?
Merci d'avance
Fabius62
TRI SANS DOUBLON (fonctionne pas)
[code]Private Sub UserForm1_Initialize()
CboType.RowSource = ("code!Date") 'remplit la combo
CboType.ListIndex = -1 'une ligne vide s'affiche au lancement
'autorise la sélection multiple
ListOccasion.MultiSelect = fmMultiSelectExtended
End Sub
Private Sub ComboBox1_Change()
End Sub
Private Sub CommandButton1_Click()
End Sub
Private Sub CommandButton2_Click()
Unload Me
Exit Sub
End Sub
TRI SANS DOUBLON (ne fonctionne pas)
Private Sub UserForm_Initialize()
Set f = Sheets("Date")
Set mondico = CreateObject("Scripting.Dictionary")
a = f.Range("A2:A" & f.[A65000].End(xlUp).Row) ' tableau a(n,1) pour rapidité
For i = LBound(a) To UBound(a)
If a(i, 1) <> "" Then mondico(a(i, 1)) = ""
Next i
'--avec tri
temp = mondico.keys
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[/code]