Détecter doublons sur listbox
Fermé
sormick
-
Modifié par sormick le 18/02/2015 à 11:22
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 18 févr. 2015 à 19:48
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 18 févr. 2015 à 19:48
A voir également:
- Détecter doublons sur listbox
- Comment détecter un traceur sur téléphone - Accueil - Confidentialité
- Doublons photos - Guide
- Supprimer les doublons excel - Guide
- Supprimer les doublons photos gratuit - Télécharger - Nettoyage
- Détecter clé usb - Guide
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
18 févr. 2015 à 12:06
18 févr. 2015 à 12:06
Bonjour Sormick, bonjour le forum,
En principe, pour éviter cela il est d'usage d'alimenter la Listbox sans doublon... Si ça t'intéresse je peux te proposer un code mais il me faudra savoir où se trouvent tes données.
Sinon essaie ça :
En principe, pour éviter cela il est d'usage d'alimenter la Listbox sans doublon... Si ça t'intéresse je peux te proposer un code mais il me faudra savoir où se trouvent tes données.
Sinon essaie ça :
Dim I As Long Dim J As Long With Me.ListBox2 For I = 0 To .ListCount - 1 If .Selected(I) = True Then For J = 0 To .ListCount - 1 If .Selected(J) = True Then If .List(I) = .List(J) And I <> J Then MsgBox "Doublon !": Exit Sub End If Next J End If Next I End With
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
18 févr. 2015 à 13:57
18 févr. 2015 à 13:57
Bonjour Sormick, bonjour le forum,
Peut-être comme ça alors :
Peut-être comme ça alors :
Dim I As Long Dim J As Long With Me.ListBox2 For I = 0 To .ListCount - 1 If .Selected(I) = True Then For J = 0 To .ListCount - 1 If .Selected(J) = True Then If Left(.List(I), 2) = "CM" And Left(.List(J), 2) = "CM" And I <> J Then MsgBox "Doublon !": Exit Sub End If Next J End If Next I End With
Cette derniere macro par thautheme est celle que je souhaite utiliser pour détecter les doublons. mais pourquoi rien ne se passe lorsque je clique sur une valeur en doublon sur la listbox? Il y a t'il une erreur sur ce code?
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
18 févr. 2015 à 17:28
18 févr. 2015 à 17:28
Bonjour Sormick, bonjour le forum,
Il semblerait qu'en mode MultiSelect, l'événement Click ne soit plus déclenché à la sélection d'un élément de la ListBox... L'aide VBA n'en parle pas. Deux solutions pas très confortables :
Dans le premier cas il faut que l'utilisateur le sache sinon il n'aura pas de message.
Dans le second, si l'utilisateur est un mordu des raccourcis clavier (comme moi), il risque de passer au travers...
J'ai pas mieux désolé, mais je pense que les balèzes qui sévissent dans ce forum vont te trouver une vraie solution...
Il semblerait qu'en mode MultiSelect, l'événement Click ne soit plus déclenché à la sélection d'un élément de la ListBox... L'aide VBA n'en parle pas. Deux solutions pas très confortables :
- Utiliser l'événement DblClick (Double-Clic)
- Utiliser l'événement Mouse_up
Dans le premier cas il faut que l'utilisateur le sache sinon il n'aura pas de message.
Dans le second, si l'utilisateur est un mordu des raccourcis clavier (comme moi), il risque de passer au travers...
J'ai pas mieux désolé, mais je pense que les balèzes qui sévissent dans ce forum vont te trouver une vraie solution...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
>
sormick
18 févr. 2015 à 19:48
18 févr. 2015 à 19:48
Je voulais dire fmMultiSelectMulti car en Single un seul élément peut-être sélectionné. Plus exactement deux au maximum !...
Je vois mal comment ton dernier code peut fonctionner en restant en Single. Vérifie bien car ce code n'est absolument pas adapté à ta requête !... En plus du bug que tu signales, si tu choisis un élément qui ne commence pas par CM puis, en second, un élément qui commence par CM tu auras le message de doublon alors qu'il n'y a pas de doublon !?...
Je vois mal comment ton dernier code peut fonctionner en restant en Single. Vérifie bien car ce code n'est absolument pas adapté à ta requête !... En plus du bug que tu signales, si tu choisis un élément qui ne commence pas par CM puis, en second, un élément qui commence par CM tu auras le message de doublon alors qu'il n'y a pas de doublon !?...
sur ce code :
If Left(.List(i), 2) = "CM" And Left(.List(j), 2) = "CM" And i <> j Then MsgBox "Doublon !": Exit Sub
j'ai enlevé (And i <> j) et la ça a l'air de fonctionner!!!!
sauf que ça ne fonctionne pas bien avec "CM" car j'ai essayé avec une seule valeur "CM" et une autre "CE" et il me détecte un doublon alors que ce ne sont pas les mêmes valeurs
If Left(.List(i), 2) = "CM" And Left(.List(j), 2) = "CM" And i <> j Then MsgBox "Doublon !": Exit Sub
j'ai enlevé (And i <> j) et la ça a l'air de fonctionner!!!!
sauf que ça ne fonctionne pas bien avec "CM" car j'ai essayé avec une seule valeur "CM" et une autre "CE" et il me détecte un doublon alors que ce ne sont pas les mêmes valeurs
finalement j'ai trouvé un autre code que j'ai modifié:
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 .Selected(j) = True Then
If Left(.List(i), 2) = "CM" And Left(.List(j), 2) = "CM" And i <> j Then MsgBox "Doublon !": Exit Sub
End If
Next
Next
End With
et là il me détecte bien les doublons , sauf que lorsque je clique sur la première valeur au dessus de la listbox cette macro ne fonctionne pas!!!
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 .Selected(j) = True Then
If Left(.List(i), 2) = "CM" And Left(.List(j), 2) = "CM" And i <> j Then MsgBox "Doublon !": Exit Sub
End If
Next
Next
End With
et là il me détecte bien les doublons , sauf que lorsque je clique sur la première valeur au dessus de la listbox cette macro ne fonctionne pas!!!
18 févr. 2015 à 13:18
Au contraire! je veux garder ces doublons sur la listbox.
je voudrais juste que si il y a un doublon qu'il me lance une autre macro.
là ou ça se corse beaucoup c'est que je souhaite qu'il me détecte seulement les doublons sur une partie de la valeur.
voici un exemple de cette valeur:
CM T412522P
je voudrais que sur la listbox qu'il me détecte les doublons CM .
j'ai un code VBA qui me détecte cette valeur (CM) mais ne détecte pas les Doublons (CM).
voici ce code:
Dim Infos
Infos = Split(ListBox2.Text, " ")
If Infos(0) = "CM" Then
msgbox "trouvé"
end if
Pouvez vous m'aider? car je n'y arrive pas