SUPPRIMER LES DOUBLONS D'UNE LISTBOX

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 24 juil. 2003 à 00:14
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
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7647-supprimer-les-doublons-d-une-listbox

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 74
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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 sept. 2007 à 10:41
2003 ? .Net était sortit, en 2003 :p (me semble)
DiJiTooL Messages postés 78 Date d'inscription samedi 4 août 2001 Statut Membre Dernière intervention 29 mars 2007
29 sept. 2007 à 10:11
Si tu regarde la date tu comprendra peut être pourquoi c'est pas du .Net ....
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 sept. 2007 à 08:51
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 ...
ZLASSI Messages postés 5 Date d'inscription mercredi 16 mai 2007 Statut Membre Dernière intervention 9 octobre 2008
28 sept. 2007 à 07:46
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
cs_pico57 Messages postés 4 Date d'inscription jeudi 17 mars 2005 Statut Membre Dernière intervention 27 août 2009 1
19 mai 2007 à 17:01
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
cs_pico57 Messages postés 4 Date d'inscription jeudi 17 mars 2005 Statut Membre Dernière intervention 27 août 2009 1
14 avril 2007 à 10:53
Cool ce code, merci
Ricky65 Messages postés 1 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 1 mars 2007
1 mars 2007 à 14:28
Merci pour ce code qui correspond tout a fait à ce que je recherchais !
cs_salazar Messages postés 241 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 février 2006 2
3 févr. 2005 à 15:10
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...
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
13 nov. 2003 à 13:09
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)
DiJiTooL Messages postés 78 Date d'inscription samedi 4 août 2001 Statut Membre Dernière intervention 29 mars 2007
24 juil. 2003 à 03:38
brunews exprime toi lol
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
24 juil. 2003 à 01:40
Faudrais que tu donne la valeur
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 juil. 2003 à 00:14
API SendMessage avec LB_FINDSTRINGEXACT sera au moins 10 fois + rapide.