Public WithEvents TxtB As MSForms.TextBox
Public WithEvents Combo As MSForms.ComboBox
Public WithEvents LISTE As MSForms.ListBox
Public WithEvents CHECK As MSForms.CheckBox
Public WithEvents uf As UserForm
Dim cl() As New UserForm1 ' instance de classe a l'interieur du module userform
Private Sub TxtB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer): GoOneEvent TxtB, KeyCode: End Sub
Private Sub uf_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer): GoOneEvent uf, KeyCode: End Sub
Private Sub LISTE_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer): GoOneEvent LISTE, KeyCode: End Sub
Private Sub CHECK_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer): GoOneEvent CHECK, KeyCode: End Sub
Private Sub Combo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer): GoOneEvent Combo, KeyCode: End Sub
Private Sub UserForm_Activate()
Dim ctrl, I&
ComboBox1.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
ComboBox2.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
ComboBox3.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
ListBox1.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
For Each ctrl In Me.Controls
Select Case TypeName(ctrl)
Case "TextBox": I = I + 1: ReDim Preserve cl(1 To I): Set cl(I).TxtB = ctrl
Case "ComboBox": I = I + 1: ReDim Preserve cl(1 To I): Set cl(I).Combo = ctrl
Case "Listbox": I = I + 1: ReDim Preserve cl(1 To I): Set cl(I).LISTE = ctrl
Case "CheckBox": I = I + 1: ReDim Preserve cl(1 To I): Set cl(I).CHECK = ctrl
'case.....
End Select
Next
I = I + 1: ReDim Preserve cl(1 To I): Set cl(I).uf = Me
End Sub
' ET C EST ICI QUE TU GERE LA TOUCHE <<ENTER>> DE TOUT LES CONTROLS QUI POSSEDENT L'EVENT KEYDOWN
Public Sub GoOneEvent(ctrl, KeyCode)
If KeyCode = 13 Then MsgBox "vous avez appuyé sur <<ENTER>> dans " & ctrl.Name
End Sub