Supprimer les doublons d'une listbox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 677 fois - Téléchargée 36 fois

Contenu du snippet

J'avais du mal à supprimer les items en doubles dans une listbox donc j'ai cherché comment faire et j'ai trouvé ce ptit bout de code =), ça n'est pas de moi mais ça peut servir a certain (comme moi par exemple :p)
la source est de Fredrik Schultz lol merci a lui

Source / Exemple :


Private Sub SupDoubles(lst As ListBox)
    Dim iPos As Integer
    iPos = 0
    'Si la listbox est vide il quitte la fonction
    If lst.ListCount < 1 Then Exit Sub

    Do While iPos < lst.ListCount
        lst.Text = lst.List(iPos)
        'Verifie si le text existe deja

        If lst.ListIndex <> iPos Then
            'Si c'est le cas il supprime et garde la position iPos...
            lst.RemoveItem iPos
        Else
            'Si ce n'est pas le cas il change la position iPos...
            iPos = iPos + 1
        End If
    Loop
    'Utiliser pour désélectionner la dernière ligne
    lst.Text = "-"
End Sub

Conclusion :


Donc pour l'utiliser il suffit d'apeller la fonction:

SupDoubles MaListbox

voilou codez bien ^^

A voir également

Ajouter un commentaire

Commentaires

cs_didine13
Messages postés
96
Date d'inscription
mardi 18 août 2009
Statut
Membre
Dernière intervention
14 août 2013

Bonjour,

Merci pour cette source super rapide
steve077
Messages postés
6
Date d'inscription
vendredi 29 décembre 2006
Statut
Membre
Dernière intervention
29 juin 2008

Merci a toi
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
comme BruNews le disais:

Private Const LB_FINDSTRINGEXACT As Long = &H1A2
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

Private Sub RemoveDuplicates(ByRef voListbox As VB.ListBox)
Dim i As Long
Dim nFind As Long
Dim sItem As String
If Not Nothing Is voListbox Then
If voListbox.ListCount Then
sItem = voListbox.List(0)
Do While i < voListbox.ListCount
nFind = SendMessage(voListbox.hwnd, LB_FINDSTRINGEXACT, i, ByVal sItem)
If nFind > i Then
voListbox.RemoveItem nFind
Else
i = i + 1
sItem = voListbox.List(i)
End If
Loop
End If
End If
End Sub
kelm_by
Messages postés
296
Date d'inscription
mardi 9 janvier 2007
Statut
Membre
Dernière intervention
21 novembre 2008

Private Function supdoubl(x As ListBox)
For y = 0 To x.ListCount - 1
For z = y + 1 To x.ListCount - 1
If x.List(y) = x.List(z) Then x.RemoveItem (z)
Next z
Next y
end function
DiJiTooL
Messages postés
78
Date d'inscription
samedi 4 août 2001
Statut
Membre
Dernière intervention
29 mars 2007

lol j'était trop jeune alors =) hihi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.