Afficher et masquer des colonnes avec checkbox

Résolu
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



--
Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)

1 réponse

  1. Contributeur
    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
    1. 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
    2. Contributeur
      @NaiBonsoir,
      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
    3. 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
    4. Contributeur
      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
    5. 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