OVH Cloud OVH Cloud

Search dans un ListBox

2 réponses
Avatar
Dominic Feron
Bonjours à tous, je fais appel à une form dans mon document Excel et je veux
chercher dans une ListBox lorsque l'usager tappera dans un TextBox.

J'ai trouvé partout ce code sur le NET qui semble super bien marcher en VB
pure:

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 Form_Load()
List1.Clear
List1.AddItem "Apples"
List1.AddItem "Banana"
List1.AddItem "Bread"
List1.AddItem "Break"
Text1.Text = ""
End Sub

Private Sub Text1_Change()
'---------------->C'EST ICI, LE HWND
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, _
ByVal Text1.Text)
End Sub

Mon code VB en arrière de ma feuille Excel ne trouve pas la propriété hWnd
de mon contrôle... Est-ce une référence que j'ai oublié d'ajouter?

Ou y a-t-il une meilleur solution pour chercher dans un listBox?

Merci beaucoup de votre aide!

2 réponses

Avatar
docm
Bonjour Dominic Feron.

Je crois que les contrôles dans Excel n'ont pas de hWnd.
Il faut donc rechercher manuellement.

Private Sub TextBox3_Change()
If TextBox3 <> "" Then
For i = 0 To ListBox1.ListCount - 1
If UCase(Mid(ListBox1.List(i), 1, Len(TextBox3.Text))) UCase(TextBox3.Text) Then
ListBox1.ListIndex = i 'Sélection de l'item i
Exit Sub
End If
Next
End If
ListBox1.ListIndex = -1 'Aucun item sélectionné
End Sub

Saluts.

"Dominic Feron" wrote in message
news:
Bonjours à tous, je fais appel à une form dans mon document Excel et je
veux

chercher dans une ListBox lorsque l'usager tappera dans un TextBox.

J'ai trouvé partout ce code sur le NET qui semble super bien marcher en VB
pure:

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 Form_Load()
List1.Clear
List1.AddItem "Apples"
List1.AddItem "Banana"
List1.AddItem "Bread"
List1.AddItem "Break"
Text1.Text = ""
End Sub

Private Sub Text1_Change()
'---------------->C'EST ICI, LE HWND
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, _
ByVal Text1.Text)
End Sub

Mon code VB en arrière de ma feuille Excel ne trouve pas la propriété hWnd
de mon contrôle... Est-ce une référence que j'ai oublié d'ajouter?

Ou y a-t-il une meilleur solution pour chercher dans un listBox?

Merci beaucoup de votre aide!




Avatar
Dominic Feron
Merci l'ami, je vais essayer ceci!

"docm" a écrit dans le message de
news:
Bonjour Dominic Feron.

Je crois que les contrôles dans Excel n'ont pas de hWnd.
Il faut donc rechercher manuellement.

Private Sub TextBox3_Change()
If TextBox3 <> "" Then
For i = 0 To ListBox1.ListCount - 1
If UCase(Mid(ListBox1.List(i), 1, Len(TextBox3.Text))) > UCase(TextBox3.Text) Then
ListBox1.ListIndex = i 'Sélection de l'item i
Exit Sub
End If
Next
End If
ListBox1.ListIndex = -1 'Aucun item sélectionné
End Sub

Saluts.

"Dominic Feron" wrote in message
news:
Bonjours à tous, je fais appel à une form dans mon document Excel et je
veux

chercher dans une ListBox lorsque l'usager tappera dans un TextBox.

J'ai trouvé partout ce code sur le NET qui semble super bien marcher en
VB


pure:

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 Form_Load()
List1.Clear
List1.AddItem "Apples"
List1.AddItem "Banana"
List1.AddItem "Bread"
List1.AddItem "Break"
Text1.Text = ""
End Sub

Private Sub Text1_Change()
'---------------->C'EST ICI, LE HWND
List1.ListIndex = SendMessage(List1.hWnd, LB_FINDSTRING, -1, _
ByVal Text1.Text)
End Sub

Mon code VB en arrière de ma feuille Excel ne trouve pas la propriété
hWnd


de mon contrôle... Est-ce une référence que j'ai oublié d'ajouter?

Ou y a-t-il une meilleur solution pour chercher dans un listBox?

Merci beaucoup de votre aide!