Bonjour le forum,
Je crée actuellement un formulaire sur un Userform qui comporte différents contrôles dans une Frame (TextBox et Combobox principalement)
Je souhaiterais récupérer le nom du contrôle à chaque fois que je clic sur l'un d'entre-eux.
Je voudrais donc utiliser un événement unique du genre :
Sub Ctrl_enter()
Textbox1.value = Ctrl.name
End Sub
J'ai cru comprendre qu'il fallait utiliser un module de classe pour assigner une même procédure à plusieurs contrôles mais je ne sais pas du tout comment m'y prendre.
On m'avait déjà proposé ce code (uniquement pour des CommandButton) mais je n'arrive pas à l'adapter à tous les contrôles quel que soit leur type :
Code à mettre dans le module de l'UserForm :
Dim Tbl() As New Classe1
Private Su UserForm_Initialize()
Dim Ctrl As Control
Dim I As Integer
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "CommandButton" Then
I = I + 1: ReDim Preserve Tbl(1 To I)
Set Tbl(I).GroupeBtn = Ctrl
Set Tbl(I).Txt = TextBox1 'de façon à respecter l'encapsulage
End If
Next Ctrl
End Sub
Code à mettre dans le module de classe nommé "Classe1" (nom donné par défaut à l'ajout dans le projet) :
Public WithEvents GroupeBtn As MSForms.CommandButton
Public Txt As MSForms.TextBox
Private Sub Groupebtn_Click()
Txt.Text = GroupeBtn.Caption
End Sub
J'avoue de rien comprendre aux modules de classe et je ne sais pas du tout comment assigner une même procédure à plusieurs contrôles différents.
Merci de votre aide !