chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
11 oct. 2007 à 21:59
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
12 oct. 2007 à 00:24
salut,
je voudrais rechercher le contenu d' une TextBox dans une liste.
Pour cela j' ai declaré dans le module de ma feuille :
Private Declare Function SendMessage Lib _
"user32" Alias "SendMessageA" (ByVal hwnd _
As Long, ByVal wMsg As Integer, ByVal _
wParam As Integer, lParam As Any) As Long
Const LB_FINDSTRING = &H18F
-
Dans ma ListBox j' ai :
1
2
3
24
31
34
212
356
358
Dans ma procedure
Private Sub Text1_Validate( Cancel As Boolean)
If SendMessage(lst.hwnd, LB_FINDSTRING, -1, Text1.Text) = -1 Then
MsgBox " introuvable !"
Cancel = True
End If
End Sub
Si je recherche 35 par exemple, la recherche aboutit et il se pointe sur 356.
Et c' est pas le but.
Du coup, j' ai formaté mon texte.
000001
000002
000003
000024
000031
000034
000212
000356
000358
Private Sub Text1_Validate( Cancel As Boolean)
Dim r As String
r = Format$(Text1.Text, "000000")
If SendMessage(lst.hwnd, LB_FINDSTRING, -1, r) = -1 Then
MsgBox " introuvable !"
Cancel = True
End If
End Sub
J' ai refais le même test avec 35 = > le résultat est bon .
Mais avec le 2, le message est decevant => "Introuvable !"
En fait il renvoie toujours -1.
Question :
1° : j' ai raté quelque chose ?
2° :Quelle Const utiliser à la place de LB_FINDSTRING = &H18F
(qui cherche le premier commençant par...), pour avoir une recherche exacte.
Ce qui m' évitera de formater et la liste et le texte entré ?
Merci de répondre et de ....trouver.
<hr />
I LIKE TO BE HERE WHEN I CAN
<hr />
A voir également:
Recherche dans une ListBox avec SendMessage....infructueuse !
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 11 oct. 2007 à 22:14
Salut Casy,
j' ai testé avec LB_FINDSTRINGEXACT avant de visiter le lien => les choses ne se sont pas arrangées.
Je jette un coup d' oeil sur le lien (avant de m' absenter un moment) et je donne des nouvelles...plus tard.
Merci.
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 oct. 2007 à 22:57
Ben chez moi, pas de problème avec :
Const LB_FINDSTRING = &H18F
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Any) As Long
Private Sub Command1_Click()
MsgBox SendMessage(List1.hWnd, LB_FINDSTRING, -1, ByVal "00002")
End Sub
Private Sub Form_Load()
List1.Clear
List1.AddItem "00001"
List1.AddItem "00023"
List1.AddItem "00002"
List1.AddItem "00032"
End Sub
mon msgbox me retourne bien l'indice 2....
Aurais-je mal compris le vrai problème ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 12 oct. 2007 à 00:20
salut jmfmarques,salut BruNews,
désolé de n' avoir pas pu répondre à temps.
Effectivement, comme indiqué par BruNews ça marche avec
LB_FINDSTRINGEXACT et surtout avec ByVal.Sans ça ça marche pas.
Par contre , jmfmarques, avec LB_FINDSTRING
MsgBox SendMessage(lstEleves.hwnd, LB_FINDSTRINGEXACT, -1, ByVal "35")
s' arrête sur le 356 et renvoie 7 trouvé alors que 35 n' est pas dans la liste.
Merci les gars.
PS:jmfMarques, Content de te retrouver de nouveau,et bon retour
parmi nous.
Il faudra t' expliquer quand même. on ne s' absente pas comme ça sur un coup de tête !
... sauf si c' est personnel bien sûr.
Rien de fâcheux, j' espère.
<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 12 oct. 2007 à 00:24
c' est
MsgBox SendMessage(lstEleves.hwnd, LB_FINDSTRING, -1, ByVal "35")
qui s' arrête sur le 356 et renvoie 7 trouvé alors que 35 n' est pas dans la liste.
Erreur dans le copier/coller !