Listview : Interndire un doublon [Résolu]

Clad49
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Dernière intervention
29 mars 2010
- 26 mai 2005 à 17:42 - Dernière réponse : Clad49
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Dernière intervention
29 mars 2010
- 27 mai 2005 à 16:26
Salut !
J'ai une listview qui contient 2 colones !
- Une Pseudo
- L'autre Description

Comment faire pour éviter de métre 2 foi le même pseudo et que si il existe déjà que l'on modifie juste la description

Merci

Clad
Afficher la suite 

5 réponses

Meilleure réponse
yohan49
Messages postés
382
Date d'inscription
samedi 22 janvier 2005
Dernière intervention
13 août 2011
- 26 mai 2005 à 21:48
3
Merci
Private Function Recherche(LV As ListView, S As String) As Boolean
Dim ControlDoublon as Object
For each ControlDoublon in LV.listitems
if lcase(controldoublon) = lcase(S) then
recherche = true
exit for
end if
next
end function

controle tous les items de la liste sans se soucier des majuscules en plus

Voila

:)

Merci yohan49 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Clad49
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Dernière intervention
29 mars 2010
- 26 mai 2005 à 17:46
0
Merci
Du genre :

If Text1 = List.ListItems '..... que métre aprés ? ' Then
Text12 = "oki trouvé"
Else
Text12 = "n'existe pas"
End If

Clad
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 26 mai 2005 à 20:30
0
Merci
si ta ListView est triée sur la bonne colonne, la recherche sera plus rapide, sinon il faudra tout balayer item par item.

La Fonction suivate suppose que la ListView est triée sur la première colonne.

en paramètre, le nom de la ListView et la chaîne de recherche.

réponse True si existe, False si n'existe pas.



Private Function Recherche(LV As ListView, s As String) As Boolean

Dim P As Long

Dim M As Long

Dim G As Long

P = 1

G = LV.ListItems.Count

While P < G

M = (P + G) \ 2

If LV.ListItems(M).Text < s Then P P + 1 Else G M

Wend

If LV.ListItems(P).Text s Then Recherche True

End Function


Daniel
Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Dernière intervention
31 mars 2015
- 26 mai 2005 à 22:34
0
Merci
à part le temps de recherche qui sera nettement plus Long !!!



en plus peux utiliser strcomp qui sera 30 fois plus rapide:



If strcomp (s, LV.ListItems(M).Text, s,vbTextCompare) = 1 Then ...


Daniel
Clad49
Messages postés
265
Date d'inscription
dimanche 3 août 2003
Dernière intervention
29 mars 2010
- 27 mai 2005 à 16:26
0
Merci
Merci pour votre aide ! J'ai testé vos deux façon et celle de yohan49 fonctionne correctement par contre Gobillot la tiénne me dit que l'index et hors limites ! Sur " If LV.ListItems(P).Text = s Then "

Clad

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.