David,
Il faut sélectionner la plage de colonnes souhaitée -> Formules -> Définir un nom
et lui donner un nom Explicite comme je l'ai fait
Ensuite dans le code, il suffit d'ajouter ce nom à la constante définit tout en haut
' Mettre ici la liste des plages définies dans les noms
Const PlgDef As String = "OPC_Généralité,OPC_SousTraitance,OPC_CoTraitance,OPC_RétroCommission"
A l'initialisation du formulaire un tableau des plages est créé
Private Sub UserForm_Initialize()
Dim Ind As Integer
' Définir le tableau des plages qui commence à l'indice 0
TabPlg = Split(PlgDef, ",")
' Pour chaque plage définie
For Ind = 0 To UBound(TabPlg)
Me.Controls("CheckBox" & Ind + 1).Value = (Range(TabPlg(Ind)).EntireColumn.Hidden = False)
Next Ind
End Sub
Ce qui fait qu'on affiche ou masque la plage selon clic
Private Sub CheckBox1_Click()
If Me.CheckBox1.Value = True Then
Range(TabPlg(0)).EntireColumn.Hidden = False
Else
Range(TabPlg(0)).EntireColumn.Hidden = True
End If
End Sub
Par contre pour les CheckBox il faudra créer autant de "Private Sub" ou utiliser un module de classe
J'espère que ce sera plus clair
A+