Détecter les doublons sur listbox

sormick - Modifié par sormick le 17/02/2015 à 20:07
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 18 févr. 2015 à 19:56
Bonjour,
J'ai un code vba comme ceci pour détecter les valeurs entrées plusieurs fois sur une listbox.
Voici mon code :
Dim i As Long

Dim j As Long

With ListBox2

For i = 0 To .ListCount - 1

For j = .ListCount To (i + 1) Step -1

If .List(j) = .List(i) Then

MsgBox "doublon trouvé"

End If

Next

Next

End With

Mais il y a un message d'erreur lorsque je clique sur le bouton ou il y a ce code.
Je débute en vba.
Je n'arrives pas à voir d'où peut venir l'erreur

4 réponses

cs_Le Pivert Messages postés 7823 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 30 septembre 2022 134
18 févr. 2015 à 14:35
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
Modifié par ucfoutu le 17/02/2015 à 20:35
Bonjour,
Ah !
Tu es ici dans le forum général Visual Basic et ...
Il se trouve que la solution est différente selon que l'outil de développement est VB6, VBA ou VB.Net !
Tu développes sous VBA, apparemment ===>>> je déplace donc vers le sous-forum VBA et ... ne reviendrai que demain.

J'aurais montrè beaucoup plus de compréhension si, en dépit de cette négligence :
1) tu avais dit quel était le message d'erreur (et sur quelle ligne)
2) tu avais au moins présenté ton code entre balises code.
Mais non ! Là, tu es venu en dilettante, sans avoir vraiment lu les règles de ce forum, la seule chose comptant pour toi étant d'obtenir une "soluce" sans faire toi-même le moindre effort (de précision, de choix du sous-forum, de présentation de ton code, etc ...)
J'ai toujours été convaincu de ce qu'un dilettante ne pouvait être pressé.
A demain, donc ...(tu vas devoir attendre).

PS : et comme tu as dit que tu voulais "détecter" (et non autre chose), je te donnerai une solution qui se contentera de les "détecter", bien sûr.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
Modifié par ucfoutu le 18/02/2015 à 13:24
En attendant mon intervention (ce soir, pas avant) avec un code meilleur :
Juste une question pour toi, à propos de ton code :
combien, selon toi, vaut i+1 (et donc j) lorsque i = listcount-1 ???
Si tu réfléchis à cela, ce sera un premier pas raisonnable (et enfin raisonné) vers un réveil salutaire.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
Modifié par ucfoutu le 18/02/2015 à 20:13
Ben ...
Chose promise ===>> chose due ==>>
On ne va faire qu'une seule boucle et profiter de la particularité des listboxes de VBA ===>>
For i = ListBox1.ListCount - 1 To 1 Step -1
ListBox1.ListIndex = -1
ListBox1.Text = ListBox1.List(i)
If ListBox1.ListIndex > -1 And ListBox1.ListIndex < i Then
ListBox1.Selected(i) = True
ListBox1.TopIndex = i
MsgBox "tu le vois, l'article mis en surbrillance ? ==>> ben ...c'est un doublon"
End If
Next

Je me suis bien évidemment contenté de répondre exactement à la question telle qu'exactement posée, à savoir :
détecter les valeurs entrées plusieurs fois sur une listbox

Mon code "détecte" donc et ne fait rien d'autre que "détecter"
Le plus drôle de cette affaire est que le code eût été encore plus simple s'il ne s'était pas agi que de "détecter" ... LOL

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0