[VBA] Macro afficher masquer

Voila mon souci, j’ai un fichier excel avec 2 feuilles, dans la 1ere j’ai un bouton (le bouton qu’on peut cocher ou décocher fait avec la boite a outil de formulaire) associé a une macro, je voudrais que ma macro affiche ou masque certaine ligne et colonne du tableau située sur ma 2eme feuille en fonction que le bouton soit coché ou non.
Je peux lier le bouton a une cellule qui affiche VRAI ou FAUX en fonction de l’état du bouton et je pensais me servir de ça pour les conditions de la macro.
Ma macro ne marche pas, je vous la montre au cas ou quelqu’un pourrait m’aider :

Sub Sites()

Application.ScreenUpdating = False
Sheets("Sites").Select
Select Case Range("B3").Value

Case FAUX
Sheets("DIN").Select
Range("C1").Select
Selection.EntireColumn.Hidden = True
Rows("48:93").Select
Selection.EntireRow.Hidden = True
End Select

Sheets("Sites").Select
Select Case Range("B3").Value

Case VRAI
Sheets("DIN").Select
Range("C1").Select
Selection.EntireColumn.Hidden = False
Rows("48:93").Select
Selection.EntireRow.Hidden = False

End Select
End Sub

Tu arrives à la compiler ?
Sinon à quelle ligne bloque-t-elle ?

Si tu arrives à compiler :
-As-tu un message d’erreur à l’exécution ?
-Fais une exécution en pas à pas en mettant
Application.ScreenUpdating = true pour voir la progression
et un point d’arrêt sur la ligne Sheets(“Sites”).Select
et regarde où ça bloque

Déjà, je pense qu’il faut mettre des guillemets à VRAI et FAUX :

Case "FAUX"
Case "VRAI"

Tout d’abord merci de vos réponses, j’ai essayer de faire ce que vous m’avez dit et voici le résultat.
J’ai exécuté ma macro pas a pas (je savais pas que c’était possible) et en faite la macro execute les 2 cas ou aucun des 2 selon que la case est coché ou non, donc ça revient au même.
J’ai essayé les guillements rien ne change, si vous avez une autre méthode je suis preneur.

A mon avis, ce n’est pas un problème de guillemets
Vrai et faux sont des mots réservés d’excel qui représentent des valeurs logiques
Je n’ai pas testé, mais je pense qu’on en a la preuve si on les tape en minuscule, ils passent automatiquement en majuscules.

Mais le problème vient bien quand même de là :
Si ce sont des mots réservés, et comme VBA n’est pas francisé, il faut employer dans le code leur équivalent en macro internationale à savoir true et false

jujutor ->
Ta forme de Select … case est un peu lourde, d’autant plus que tu ne traites qu’un cas à la fois.

Tu aurais pu écrire
Select Case Range("B3").Value

Case false
Sheets("DIN").Select
Range("C1").Select
Selection.EntireColumn.Hidden = True
Rows("48:93").Select
Selection.EntireRow.Hidden = True
pas de end select

Case true
Sheets("DIN").Select
etc …
End Select

Mais dans ton cas, in bon vieux if … else était plus adapté :
if Range("B3").Value = false then
Sheets("DIN").Select
Range("C1").Select
Selection.EntireColumn.Hidden = True
Rows("48:93").Select
Selection.Hidden = True

else
Sheets("DIN").Select
Range("C1").Select
etc …
Endif

Tu peux encore simplifier parce que pour changer les propriétés d’une cellule, il n’y a pas besoin de rendre sa feuille active, ni de sélectionner les cellules en question
if Range(“B3”).Value = false then
Sheets(“DIN”).Range(“C1”).EntireColumn.Hidden = True
Sheets(“DIN”).Rows(“48:93”).Hidden = True
else
Sheets(“DIN”).Range(“C1”).EntireColumn.Hidden = False
Sheets(“DIN”).Rows(“48:93”).Hidden = False
endif

Et compte tenu de la condition qu’on applique, on peut même se passer du if
Sheets(“DIN”).Range(“C1”).EntireColumn.Hidden = not (Range(“B3”).Value)
Sheets(“DIN”).Rows(“48:93”).Hidden = not (Range(“B3”).Value)

Ok ça marche nickel, en plus je crois avoir compris tes explications (je suis pas tres doué pour les macros), merci de ton aide.

:jap: