Afficher et masquer des colonnes avec checkbox [Résolu/Fermé]

Signaler
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
-
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
-
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

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 109
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57572 internautes nous ont dit merci ce mois-ci

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 109
Mais non rassure-toi, cela arrive à tout le monde de ne pas voir les évidences si bien que rien ne vaut un beau présentoir pour cacher quelque chose !
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
46
Une dernière question concernant cette macro : Si je ne souhaite pas masquer une plage mais des colonnes spécifiques (dont les lettres ne changent jamais) :
Private Sub CheckBox5_Click()
ActiveSheet.Unprotect "alsh"
If CheckBox5 = True Then
    Sheets("Prévisionnel").Columns("AB,AF,AJ,AN,AR").EntireColumn.Hidden = False
Else
    Sheets("Prévisionnel").Columns("AB,AF,AJ,AN,AR").EntireColumn.Hidden = True
End If
ActiveSheet.Protect "alsh", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowInsertingColumns:=True, AllowInsertingRows:=True, _
        AllowInsertingHyperlinks:=True
End Sub

ne fonctionne pas.
Peut-on indiquer plusieurs colonnes comme dans l'exemple qui ne fonctionne pas ci-dessus ? Ou alors sommes-nous obligé de mentionner chaque colonne individuellement comme j'ai pu le voir ci et là ?
Merci d'avance !
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 109
Bonsoir,

des colonnes spécifiques (dont les lettres ne changent jamais) : ne fonctionne pas

Cela ne fonctionne pas car ta syntaxe n'est pas correcte pour qualifier une (ou des) colonne(s) si tu utilises l'objet Range cela est prévu dans VBA
    Sheets("Prévisionnel").Range("AB:AB,AF:AF, AJ:AJ, AN:AN, AR:AR").EntireColumn.Hidden = False
Messages postés
606
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
2 août 2020
46
Magnifique !
Ce serait plus simple de pouvoir qualifier des colonnes par :
("A,B,C")

m'enfin ^^
L'important c'est de trouver ce qui fonctionne.
Quelle est la différence entre Range et Columns ? Range serait une plage ?
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 109
la différence entre Range et Columns est assez ténue car Columns est un Range aussi, mais l'objet Range " peut inclure l'opérateur de plage (le signe deux-points), l'opérateur d'intersection (un espace) ou l'opérateur de liaison (une virgule) (aide VBA) alors que c'est limité dans Columns au signe deux-points.