Afficher et masquer des colonnes avec checkbox

Résolu/Fermé
Nai Messages postés 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 - 19 sept. 2016 à 20:02
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 22 sept. 2016 à 08:37
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 704
19 sept. 2016 à 21:45
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 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 55
20 sept. 2016 à 18:18
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 704 > Nai Messages postés 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024
20 sept. 2016 à 18:35
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 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 55
20 sept. 2016 à 18:59
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 704
20 sept. 2016 à 21:22
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 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 55
20 sept. 2016 à 23:14
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