Bonjour,
Je n'ai pas utilisé un contrôle "Formulaire", mais "ActiveX"..
Et également un module de classe...
Regarde le fichier joint
Les codes utilisés :
Dans le Workbook_Open :
Private Sub Workbook_Open()
Call Init
End Sub
Dans un module normal :
Dim Buttons() As New Classe1
Sub Init()
Dim ButtonCount As Integer
Dim Obj As OLEObject
ButtonCount = 0
For Each Obj In ActiveSheet.OLEObjects
If TypeOf Obj.Object Is MSForms.CheckBox Then
ButtonCount = ButtonCount + 1
ReDim Preserve Buttons(1 To ButtonCount)
Set Buttons(ButtonCount).ButtonGroup = Obj.Object
End If
Next Obj
End Sub
Et dans le module de classe :
Public WithEvents ButtonGroup As MSForms.CheckBox
Private Sub ButtonGroup_Click()
Dim Ligne As Long
Dim Col As String
Application.ScreenUpdating = False
Ligne = ButtonGroup.TopLeftCell.Row 'Ligne du bouton appuyé
Col = Right(ButtonGroup.Caption, Len(ButtonGroup.Caption) - InStr(1, ButtonGroup.Caption, " ")) 'colonne concernée
Cells(Ligne, 1).Interior.ColorIndex = IIf(ButtonGroup, 3, 4) 'si colonne masquée, rouge, sinon, vert
With Feuil2
.Columns(Col).Hidden = IIf(ButtonGroup, True, False) 'masquage de la colonne
End With
Range("A1").Select 'juste pour le visu
End Sub
Dès que tu veux masquer une colonne de la Feuil2, celle-ci se masque, et la cellule contenant le checkbox se met en rouge
Bonne fin de journée