Gestion de Checkbox sur une autre feuille

Bonjour à tous et avant toute chose bonne année !

Voilà mon petit problème je cherche à masquer des lignes sur des onglets mois à partir d'une "CheckBox4" se situant sur une autre feuille "Config" et modifier l’état des CheckBox ayant le nom "CheckBox2" sur chaque feuil de mois ( valeur et visibilité ) les onglets de mois étant protégé par un mot de passe. Mes diverses recherches m'ont mené à ce code mais j'ai un problème évident de syntaxe (je pense à un pb sur la sélection des Checkbox )

La macro est lancé en cochant ou décochant la Checkbox4 à partir de la feuille "Config"

 Private Sub CheckBox4_Click()

Dim Ws As Worksheet

   For Each Ws In Sheets(Array("JANV", "FEV", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPT", "OCT", "NOV", "DEC"))
    If Ws.ProtectContents = True Then Ws.Unprotect "mdp"

  Next Ws

  For Each Ws In Sheets(Array("JANV", "FEV", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPT", "OCT", "NOV", "DEC"))
    Ws.Activate
    Ws.Range("A1").Select
    If Worksheets("Config").CheckBox4.Value = True Then
        Ws.CheckBox2.Value = True
        Ws.Visible = True
       Cells.Rows("91:123").Hidden = False
    ElseIf Worksheets("Config").CheckBox4.Value = False Then
        Ws.CheckBox2.Value = False
        Ws.CheckBox2.Visible = False
        Cells.Rows("91:123").Hidden = True
    End If
    Next Ws

   For Each Ws In Sheets(Array("JANV", "FEV", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPT", "OCT", "NOV", "DEC"))
   If Ws.ProtectContents = False Then Ws.Protect "mdp"

  Next Ws

End Sub

Si vous avez une petite piste n'étant pas un expert je me doute que le code ne doit pas être optimisé

Salut Chris,

ceci devrait fonctionner beaucoup mieux! 8)

A adapter selon tes besoins futurs...

Private Sub CheckBox4_Click()
'
Dim Ws As Worksheet
'
Application.ScreenUpdating = False
'
For Each Ws In ThisWorkbook.Worksheets
    If Ws.Name <> "Config" Then
        With Ws
            If .ProtectContents = True Then .Unprotect "mdp"
            .OLEObjects("CheckBox2").Object.Value = IIf(Worksheets("Config").OLEObjects("CheckBox4").Object.Value = True, True, False)
            .Rows("91:123").Hidden = IIf(Worksheets("Config").OLEObjects("CheckBox4").Object.Value = True, True, False)
            If .ProtectContents = False Then .Protect "mdp"
        End With
    End If
Next Ws
'
Application.ScreenUpdating = True
'
End Sub

Avec plaisir!

A+

Un grand merci Curulis d'avoir pris le temps de te pencher sur mon problème effectivement cela marche parfaitement j'ai pu l'adapter facilement et découvrir deux notions que je ne connaissais pas. Pour ceux que ça intéresse je mets le code avec le changement de visibilité de la checkbox2. Petite astuce pour les novices comme moi quand vous le testez :pensez à vous enlever du mode développeur sinon vous verrez toujours les checkbox même si la propriété Visible est bien sur False.

 Private Sub CheckBox4_Click()
'
Dim Ws As Worksheet
'
Application.ScreenUpdating = False
'
For Each Ws In Sheets(Array("JANV", "FEV", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPT", "OCT", "NOV", "DEC"))

        With Ws
            If .ProtectContents = True Then .Unprotect "Opus"
            .OLEObjects("CheckBox2").Object.Value = IIf(Worksheets("Config").OLEObjects("CheckBox4").Object.Value = True, True, False)
            .OLEObjects("CheckBox2").Visible = IIf(Worksheets("Config").OLEObjects("CheckBox4").Object.Value = True, True, False)
            .Rows("50:123").Hidden = IIf(Worksheets("Config").OLEObjects("CheckBox4").Object.Value = True, False, True)
            If .ProtectContents = False Then .Protect "Opus"
        End With

Next Ws
'
Application.ScreenUpdating = True
'
End Sub

Bon week-end à tous

Rechercher des sujets similaires à "gestion checkbox feuille"