Masquer colonne selon contenu de la première cellule

Bonjour tout le monde !

Je me permets de poster sur le forum car j'ai une feuille d'un classeur à laquelle je veux ajouter du VBA et je n'ai aucune idée de comment gérer.

Je vous explique mon objectif:

J'ai 6 tableaux dans ma feuille qui me permette de compter des menuiseries, les "0" en ligne 3 proviennent d'une autre feuille du classeur (que j'ai enlevé pour la confidentialité). Les colonnes fonctionne par deux. Je souhaiterai que lorsque la cellule contient 0 alors la colonne soit soit masquée. A l'inverse, si elle contient autres chose que 0 alors elle s'affiche (selon ce qui est rempli dans la feuille source: 1_MEX).

J'ai réalisé un petit essai dans VBA mais ...

Je ne sais pas comment faire fonctionner une macro sans bouton ? Est ce possible ? Que la mise à jour des colonnes soit faite des qu'on renseigne une valeur dans "1_MEX" ?

Merci d'avance pour votre aide

Bonne journée et bonne semaine

Je vous joint le fichier:

Bonjour Pedro,

Merci pour ton aide et pour ton temps.

J'ai réussi à faire fonctionner une macro qui affiche et une qui masque comme je le souhaite. Cependant, je ne jamais travaillé autrement qu'avec les boutons.. je voudrai que les deux macros se mettent en marche lorsque j'ouvre la FEUILLE "2_FACADE", est ce possible ? ou faut-il centraliser en une seule macro ?

Car la je dois le faire manuellement avec deux boutons différents… ce n'est pas optimisé.

Quelqu'un peut m'aider svp ?

Merci d'avance.

0ex-forum2.xlsm (247.92 Ko)

EDIT: J'ai placé mon code en une seule macro ici

image

En remplaçant Sub par Private sub Worksheet_Activate

Cela fonctionne ! Mais est ce sure et optimisé ?

4ex-forum-v3.xlsm (241.27 Ko)

En remplaçant Sub par Private sub Worksheet_Activate

Cela fonctionne ! Mais est ce sure et optimisé ?

4ex-forum-v3.xlsm (241.27 Ko)

Tu peux faire les 2 opérations dans la même boucle, et même dans la même condition. Car si ta cellule n'est pas égale à 0, c'est qu'elle est différente de 0 ! Je te propose aussi 2 instructions complémentaires pour accélérer l'éxécution du code et éviter le désagrément du lag à l'ouverture de la feuille :

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False 'Désactive l'affichage le temps d'exécuter le code (réactivation automatique en fin de macro)
Application.Calculation = xlCalculationManual 'Désactiver les calculs automatiques
For Col = 10 To 89
    If Cells(4, Col) = "0" Then Columns(Col).Hidden = True Else Columns(Col).Hidden = False
Next Col
Application.Calculation = xlCalculationAutomatic 'Réactiver les calculs automatiques

End Sub
Rechercher des sujets similaires à "masquer colonne contenu premiere"