Selectionner un élément d'une zone de liste (ComboBox ou ListBox)

Contenu du snippet

Private Const CB_FINDSTRING As Long = &H14C
Private Const CB_FINDSTRINGEXACT As Long = &H158
Private Const LB_FINDSTRING As Long = &H18F
Private Const LB_FINDSTRINGEXACT As Long = &H1A2
   
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
  
Public Function SelectItem(ByRef voControl As Object, ByRef vsItem As String, Optional ByVal vbExact As Boolean = True) As Long
Dim eMsg As Long
   If TypeOf voControl Is VB.ComboBox Then
       eMsg = IIf(vbExact, CB_FINDSTRINGEXACT, CB_FINDSTRING)
   ElseIf TypeOf voControl Is VB.ListBox Then
       eMsg = IIf(vbExact, LB_FINDSTRINGEXACT, LB_FINDSTRING)
   Else
       SelectItem = -1
       Err.Raise 5
       Exit Function
   End If
   
   If LenB(vsItem) Then
       SelectItem = SendMessage(voControl.hWnd, eMsg, -1, ByVal vsItem)
       If SelectItem > -1 Then
           voControl.ListIndex = SelectItem
       End If
   Else
       SelectItem = voControl.ListIndex
   End If
End Function 

Compatibilité : VB6, VBA

A voir également

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.