Ta listbox est-elle rangée dans l'ordre ?
Si oui :
Une boucle ou tu vérifie si Item(i) = Item(I+1).
Si non :
Deux solutions :
-Ta liste doit rester dans l'ordre ou elle est :
Deux boucles imbriquées
-Ta liste n'a pas besoin de rester dans l'ordre ou elle est :
Tu met la propriété Sorted à True et tu reviens à la toute première méthode.
Sinon voila une solution valable pour tous les cas :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Dim ListTab() As String
Dim ListStr As String
Dim i As Integer
ListStr=""
For i=0 To List1.ListCount - 1
If Instr(ListStr,List1.Item(i))=0 then ListStr=ListStr & List1.Item(i) & ";"
Next
ListStr=Left(ListStr,Len(ListStr)-1)
ListTab = Split(ListStr,";")
List1.Clear
For i = 0 To Ubound(ListTab)
List1.AddItem ListTab(i)
Next |
Ps : Je ne suis pas sur que la fonction Instr renvoie 0 si elle ne trouve pas la sous-chaine dans la chaine. Je te laisse vérifier car je ne suis pas chez moi et n'ai donc pas MSDN. Si ce n'est pas le cas, il faut remplacer le 0 du If dans la première boucle par la bonne valeur.
Explications : On enregistre les valeurs de la liste une et une seule fois dans une variable String avec un séparateur (ici le ";" ) puis on resépare les chaine dans un tableau (Split) avant de remettre le tableau cette fois sans doublons dans la liste.
Partager