Afficher et masquer des colonnes avec checkbox

Résolu
Nai Messages postés 714 Date d'inscription   Statut Membre Dernière intervention   -  
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir la communauté ^^
Je cherche à afficher et masquer des colonnes avec Checkbox.
Private Sub CheckBox1_Click()
If CheckBox1 = True Then
    Sheets("Prévisionnel").Columns("H:V").EntireColumn.Hidden = False
Else
    Sheets("Prévisionnel").Columns("H:V").EntireColumn.Hidden = True
End If
End Sub

Ça ne fonctionne pas :/
Pouvez-vous m'expliquer d'où vient l'erreur (ou proposer un autre moyen de cacher des zones?)
J'ai besoin de masquer/afficher les semaines1, 2, 3 et/ou 4 ^^
https://www.cjoint.com/c/FItsbBnZjJO


1 réponse

gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour,

Tu tiens vraiment à protéger ton classeur contre toute intervention non souhaitée des utilisateurs, c'est ton droit.
Tu as bien protégé et donc toi non plus tu ne peux pas modifier ton classeur par macro.
Je pense que tu vas trouver le remède. ;-)
1
Nai Messages postés 714 Date d'inscription   Statut Membre Dernière intervention   55
 
Merci pour ton message !
C'est tout bête en effet. J'ôte la protection au clic et la remet à la fin de la macro.
Ça fonctionne, mais bizarrement : https://www.cjoint.com/c/FIuqqn2bqVR
Il semble y avoir un ordre d'affichage et de masquage :O
Par exemple : impossible de masquer la semaine 2 si la semaine 1 n'est pas masquée.
Private Sub CheckBox1_Click()
ActiveSheet.Unprotect "alsh"
If CheckBox1 = True Then
    Sheets("Prévisionnel").Columns("H:V").EntireColumn.Hidden = False
Else
    Sheets("Prévisionnel").Columns("H:V").EntireColumn.Hidden = True
End If
ActiveSheet.Protect "alsh", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowInsertingColumns:=True, AllowInsertingRows:=True, _
        AllowInsertingHyperlinks:=True
End Sub

Private Sub CheckBox2_Click()
ActiveSheet.Unprotect "alsh"
If CheckBox1 = True Then
    Sheets("Prévisionnel").Columns("W:AK").EntireColumn.Hidden = False
Else
    Sheets("Prévisionnel").Columns("W:AK").EntireColumn.Hidden = True
End If
ActiveSheet.Protect "alsh", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowInsertingColumns:=True, AllowInsertingRows:=True, _
        AllowInsertingHyperlinks:=True
End Sub

Une idée ? ^^
Merci encore :)
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724 > Nai Messages postés 714 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,
C'est tout bête en effet.. J'ai bien l'impression que là aussi c'est tout bête : lorsque l'on copie "CheckBox1_Click" dans "CheckBox2_Click" il faudrait peut-être tester celui qui est cliqué et non l'autre. ;-)
0
Nai Messages postés 714 Date d'inscription   Statut Membre Dernière intervention   55
 
Je n'ai pas bien compris.
Je vois que la formule du checkbox2 mentionne checkbox1. Je ne comprend pas comment le modifier.
"Désolé... Nous avons rencontré un problème avec cette formule : nous n'avons pas trouvé de référence de plage ou de nom défini."
Kézako ?
0
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Quand tu cliques le 2 tu testait le 1 il faut tester le 2 CheckBox2
Private Sub CheckBox2_Click()
ActiveSheet.Unprotect "alsh"
If CheckBox2 = True Then

Tu peux même simplifier ainsi :
Private Sub CheckBox2_Click()
ActiveSheet.Unprotect "alsh"
If CheckBox2 Then
0
Nai Messages postés 714 Date d'inscription   Statut Membre Dernière intervention   55
 
Oh ! Quelle nouille ! Problème évidemment résolu. J'ai pu faire les deux autres semaines.
Je suis désolé mais te remercie vivement !
0