Permet de selectionner un champ d'une combo de type combo simple à partir d'une saisie de l'utilisateur. L'appel peut ce faire sur un Keypress :
If KeyAscii = 13 Then
Call ComboDynamique(CmboNomCompte, "Le compte n'a pas été trouvé")
End If
Source / Exemple :
'Majuscule à la premiere lettre d'une chaine
Public Function Majuscule(txt As String) As String
Majuscule = UCase$(Left(txt, 1)) & Mid(txt, 2, Len(txt))
End Function
Public Sub ComboDynamique(ByRef combo As ComboBox, _
MsgErreur As String, Optional TitreErreur As String = "Erreur")
Dim i As Integer
'Majuscule à la premiere lettre de la saisie
combo.Text = Majuscule(combo.Text)
'Cherche le texte dans la combo
For i = 0 To combo.ListCount - 1
If (combo.List(i) = combo.Text) Then ' C'est trouvé, on selectionne et on quitte
combo.ListIndex = i
Exit For
ElseIf (i = combo.ListCount - 1) Then
'Le texte n'est pas dans la combo : msgbox
MsgBox MsgErreur, vbInformation + vbOKOnly, TitreErreur
End If
Next i
End Sub
'-------------------
'Version avec API
'-------------------
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const LB_FINDSTRING = &H18F ' pour les listBox
Const CB_FINDSTRING = &H14C ' Pour les comboBox
Private Sub Combo1_Change()
Combo1.ListIndex = SendMessage(Combo1.hwnd, &H14C, -1, ByVal CStr(Combo1.Text))
End Sub
Conclusion :
Exact Max12, on peut faire plus simple avec API :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const LB_FINDSTRING = &H18F
Const CB_FINDSTRING = &H14C
Private Sub Combo1_Change()
Combo1.ListIndex = SendMessage(Combo1.hwnd, &H14C, -1, ByVal CStr(Combo1.Text))
End Sub
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.