cs_Fripouil
Messages postés175Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention 8 mai 2017
-
15 mai 2008 à 01:41
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
16 mai 2008 à 03:19
Comment comparer 2 listbox qui contiennent presque les même données et indiquer quelles données ne sont pas présentes dans les 2 ?
J' ai essayé plein de codes mais impossible de faire dire lesquelles manque.
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 16 mai 2008 à 03:19
Fais bien attention d'utiliser les bons types lorsque tu compares.
Une ListBox contiens des Object, pas des String. Donc si tu test avec Contains, ça test si les objets sont les mêmes et pas si le texte affiché est le même.
Donc par ex tu met dans une des liste les valeur 100, 101, 102 et 103 en Integer et dans l'autre "101" et "103" en String, ca ne trouvera pas de coresspondances.
Et aussi lorsque tu parcours les Items, il faut spéificer le bon type.
Lorsque tu ajoute des Item à la ListBox par l'éditeur Visual Basic, ça t'ajoute des String. Donc les tests se font de la facon suivante:
For Each item As String In ListBox1.Items
If Not ListBox2.Items.Contains(item) Then
ListBox3.Items.Add(item)
End If
Next
car si tu fais If Not ListBox2.Items.Contains(item) Then mais que tu déclare Item en Integer, il ne trouvera aucune correspondance dans ListBox2, car celle-ci ne contient que des String.
Fais aussi attention lorsque tu ajoute des classes. Le test comparera alors l'instance de la classe, et non son contenu. (2 instances d'une même classes et affichant le même texte dans la ListBox ne seront donc pas reconnu comme étant les mêmes)
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009 15 mai 2008 à 05:41
Salut,
Idée possible : tu stockes tes valeurs dans 2 recordsets dynamiques, ensuite tu fais une moulinette pour comparer et tu stocke ton résultat la où tu as besoin. genre
Tant que pas rs1.eof
tant que pas rs2.eof
si rs1.valeur = rs2.valeur alors
boleen = true
variable = rs1.valeur
exit tantque
sinon
boleen = false
rs2.movenext
fin si
fin tant que
rs1.movenext
fin tantque
Bonne prog
SLB
---------------------------------------------------------------
Il faut beaucoup donner pour recevoir un tout petit peu...
---------------------------------------------------------------
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 mai 2008 à 07:27
place dans List3 les elements qui sont dans List1 mais pas dans List2
place dans List4 les elements qui sont dans List2 mais pas dans List1
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 Const LB_FINDSTRINGEXACT As Long = &H1A2
Private Sub Form_Load()
Dim i As Long
For i = 0 To List1.ListCount - 1
If SendMessage(List2.hwnd, LB_FINDSTRINGEXACT, -1, ByVal List1.List(i)) = -1 Then
List3.AddItem List1.List(i)
End If
Next i
For i = 0 To List2.ListCount - 1
If SendMessage(List1.hwnd, LB_FINDSTRINGEXACT, -1, ByVal List2.List(i)) = -1 Then
List4.AddItem List2.List(i)
End If
Next i
End Sub