Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SUPPRIMER LES DOUBLONS D'UNE LISTBOX


Information sur la source

Catégorie :Control Niveau : Débutant Date de création : 23/07/2003 Date de mise à jour : 29/02/2004 19:03:38 Vu : 7 749

Note :
6 / 10 - par 7 personnes
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

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

  • 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
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 ^^
 

Commentaires et avis

signaler à un administrateur
Commentaire de BruNews le 24/07/2003 00:14:21 administrateur CS

API SendMessage avec LB_FINDSTRINGEXACT sera au moins 10 fois + rapide.

signaler à un administrateur
Commentaire de max12 le 24/07/2003 01:40:23 administrateur CS

Faudrais que tu donne la valeur

signaler à un administrateur
Commentaire de DiJiTooL le 24/07/2003 03:38:17

brunews exprime toi lol

signaler à un administrateur
Commentaire de azerty25 le 13/11/2003 13:09:44

Salut

Cette source est interessante, elle va m'etre utile :-) Merci !
Sinon BruNews, ton API, tu es sur que sa n'est pas du CPP ? j'ai fait une recherche et je suis tombé sur plein de sites de CCP mais pas de VB (g pas fait tte la liste aussi)

signaler à un administrateur
Commentaire de salazar le 03/02/2005 15:10:26

Comment gères tu les éventuelles fautes d'orthographe ?
Si le mot que tu cherches existe avec une syntaxe différente, que fais tu ?

exemple :
mot existant = l'été indien
mot recherché = été indien
mot recherché = L'été indien
mot recherché = étés indiens...

Comment réagit ton programme ? En dehors du fait que si ta liste contient 10.000 items la recherche n'est pas finie...

Connais tu les API ? Comme le dit BruNews, l'API est sendMessage() et la constante pourrait etre LB_FINDSTRINGEXACT ou LB_FINDSTRING...

signaler à un administrateur
Commentaire de Ricky65 le 01/03/2007 14:28:52

Merci pour ce code qui correspond tout a fait à ce que je recherchais !

signaler à un administrateur
Commentaire de pico57 le 14/04/2007 10:53:47

Cool ce code, merci

signaler à un administrateur
Commentaire de pico57 le 19/05/2007 17:01:07

j'ai pas mal utilisé cette fonction, mais si il y a beaucoup d'enregistrement, je vous conseille de stocker les lignes dans un tableau, de trier ce tableau afin que les doublonc se suivent, et ensuite, on prend une ligne après l'autre et si elle est différente de la ligne précédente, alors on ajoute la ligne en question.
exemple :
Array.Sort(tabel)
                cb1.Items.Add(tabel(0))
                For compteur = 1 To tabel.Length - 1
                    If tabel(compteur) <> tabel(compteur - 1) Then
                        cb1.Items.Add(tabel(compteur))
                    End If
                Next

vala

signaler à un administrateur
Commentaire de ZLASSI le 28/09/2007 07:46:20

Bonjour à tous,
Je veux contrôler les éléments qui je vais passer dans ma listbox: ce contrôle va éviter les doublons
==> voila ce que j'ai écrit mais j'ai pas réussit :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim LV As New ListViewItem
        Dim I As Integer
        For I = 0 To ListBox1.Items.Count - 1
            If Label1.Text = ListBox1.Items.Item(I) Then
                MsgBox("Existe", MsgBoxStyle.Critical, "test")
            Else
                ListBox1.Items.Add(TextBox1.Text)
            End If
        Next
    End Sub

signaler à un administrateur
Commentaire de Renfield le 28/09/2007 08:51:09 administrateur CS

j'ai allumé mon VS2005, j'ai code un truc, je m'apercois que tu ne fais pas du .NET, c'est pas possible !!


    Private Sub AddUniqueItem(ByRef vsItem As String, ByRef voDest As ListBox)
        If Not voDest.Items.Contains(vsItem) Then
            voDest.Items.Add(vsItem)
        End If
    End Sub


y'a deja tout ce qu'il faut pour tester la présence d'un Item ...

signaler à un administrateur
Commentaire de DiJiTooL le 29/09/2007 10:11:01

Si tu regarde la date tu comprendra peut être pourquoi c'est pas du .Net ....

signaler à un administrateur
Commentaire de Renfield le 30/09/2007 10:41:18 administrateur CS

2003 ? .Net était sortit, en 2003 :p (me semble)

signaler à un administrateur
Commentaire de DiJiTooL le 30/09/2007 19:16:31

lol j'était trop jeune alors =) hihi

signaler à un administrateur
Commentaire de kelm_by le 08/04/2008 23:28:40


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

signaler à un administrateur
Commentaire de Renfield le 09/04/2008 06:48:11 administrateur CS

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

signaler à un administrateur
Commentaire de steve077 le 23/06/2008 18:04:28

Merci a toi

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.