begin process at 2012 02 12 19:03:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Control

 > SUPPRIMER LES DOUBLONS D'UNE LISTBOX

SUPPRIMER LES DOUBLONS D'UNE LISTBOX


 Information sur la source

Note :
6,5 / 10 - par 8 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : DiJiTooL

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
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 ^^


 Sources du même auteur

Source avec Zip Source avec une capture SUPPRIME LE MOUCHARD DE WINDOWS ET D'ICQ
Source avec Zip Source avec une capture DIJILEDS

 Sources de la même categorie

Source avec Zip COMMUNICATION MODBUS MASTER par sergelapointe
Source avec Zip Source avec une capture DÉPLACEMENT AVEC FLÈCHES DANS UN PAVÉ DE TEXTBOX 9X9 DYNAMIQ... par EhJoe
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLSTARS EN RÉPONSE À JAKNIGHT007 par bigboss9
Source avec Zip Source avec une capture Source .NET (Dotnet) CALENDRIER ANNUEL NORME ISO par Prog1001
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLE STARS par jaknight007

Commentaires et avis

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

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

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

Faudrais que tu donne la valeur

Commentaire de DiJiTooL le 24/07/2003 03:38:17

brunews exprime toi lol

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)

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...

Commentaire de Ricky65 le 01/03/2007 14:28:52

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

Commentaire de pico57 le 14/04/2007 10:53:47

Cool ce code, merci

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

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

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 ...

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 ....

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

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

Commentaire de DiJiTooL le 30/09/2007 19:16:31

lol j'était trop jeune alors =) hihi

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

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

Commentaire de steve077 le 23/06/2008 18:04:28

Merci a toi

Commentaire de didine13 le 23/07/2010 22:16:25 10/10

Bonjour,

Merci pour cette source super rapide

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales