Supprimer les doublons d'une listbox

0/5 (17 avis)

Snippet vu 22 028 fois - Téléchargée 38 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
23 juil. 2010 à 22:16
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
23 juin 2008 à 18:04
Merci a toi
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
9 avril 2008 à 06:48
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
8 avril 2008 à 23:28
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
30 sept. 2007 à 19:16
lol j'était trop jeune alors =) hihi
Afficher les 17 commentaires

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.