[VBA-E]Rechercher (textbox) dans une listbox
Bonjour ,
J'ai une listbox qui est remplis grace a des données excels . La listbox contient plusieurs colones . J'ai ajouter une textbox1 et une bouton pour lancer une recherche .
Ce que j'aimerais : lorsque je clique sur le bouton , VBA recherche le TextBox1 dans la ListBox1 pour m'afficher la ligne qui contient , dans la premiere colone uniquement , le TextBox1 ou une partie de celui-ci . Lorsque je reclique sur le bouton , ca cherche le suivant .
J'ai trouvé ca :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Const LB_FINDSTRINGEXACT As Long = &H1A2
Private Const LB_FINDSTRING As Long = &H18F
Private Const LB_ERR As Long = -1
'
' Entrées :
' LstBox : La ListBox dans laquelle on fait la recherche
' searchPattern : La chaine de caractère recherchée
' startIndex : (optionnel) Index de départ de la recherche
' exactMatch : (optionnel) Si True, la fonction recherche un item exactement égal à searchPattern
' Si False, la fonction recherche le premier item commençant par searchPattern
'
' Sorties :
' retourne l'index dans la liste de la première occurrence de l'élément recherché
' si rien n'est trouvé, la fonction retouren LB_ERR (-1)
'
Private Function SearchListBox(lstBox As ListBox, ByVal searchPattern As String, _
Optional ByVal startIndex As Long = -1, _
Optional ByVal exactMatch As Boolean = False) As Long
Dim searchType As Long
If exactMatch Then
searchType = LB_FINDSTRINGEXACT
Else
searchType = LB_FINDSTRING
End If
SearchListBox = SendMessage(lstBox.hwnd, searchType, startIndex, ByVal searchPattern)
End Function |
Appel :
Code:
result = SearchListBox(Listbox1, TextBox1)
Sauf que VBA ne connais pas hwnd et je n'arrive de toute facon pas à bien parametrer la recherche en question .
Pouriez-vous m'aider svp ?
Une image pour clarifier
Cordialement.