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
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 SubSi vous avez une petite piste
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 SubAvec 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 SubBon week-end à tous