Bonjour,
Avec un module de classe nommé Classe1 (nom par défaut).
Je suis parti du principe que ton UserForm s'appelle "UserForm1", que tes CheckBox sont nommées "CheckBox1", "CheckBox2", "CheckBox3", etc... Il en est de même pour les TextBox ("TextBox1", "TextBox2", "TextBox3", etc...) et que ces derniers correspondent au CheckBox, CheckBox1 pour TextBox1 et ainsi de suite. Si ce n'est pas le cas, ça sera un peu plus compliqué.
Code à mettre dans le module de l'UserForm :
Dim Chk() As New Classe1
Private Sub UserForm_Initialize()
Dim Ctrl As Control
Dim I As Integer
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "CheckBox" Then
I = I + 1
ReDim Preserve Chk(1 To I)
Ctrl.Tag = "TextBox" & Right(Ctrl.Name, Len(Ctrl.Name) - InStr(Ctrl.Name, "x"))
Set Chk(I).GroupeChk = Ctrl
End If
Next Ctrl
End Sub
Code à mettre dans le module de classe :
Public WithEvents GroupeChk As MSForms.CheckBox
Private Sub GroupeChk_Click()
'adapter le nom de la Form !
UserForm1.Controls(GroupeChk.Tag).Visible = GroupeChk.Value
End Sub