je veux tout simplement supprimer les doublons dans une listbox
Version imprimable
je veux tout simplement supprimer les doublons dans une listbox
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 :
Code:
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.