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,
Pour déclencher une macro automatiquement, il faut lier son exécution à un évènement spécifique lié à la feuille ou au classeur.
Je vous invite aussi à consulter des sujets similaires déjà traités, par exemple :
https://forum.excel-pratique.com/excel/masquer-des-colonnes-depuis-des-variables-81002
https://forum.excel-pratique.com/excel/filtre-pour-afficher-ou-masquer-des-colonnes-66883
https://forum.excel-pratique.com/excel/afficher-et-masquer-en-vba-avec-une-liste-pour-gerer-65772
https://forum.excel-pratique.com/excel/macro-afficher-masquer-des-colonnes-suivant-pls-criteres-5774...
https://forum.excel-pratique.com/excel/masquer-et-afficher-colonnes-selon-selection-dates-30089
Je vous propose de vous lancer à partir de ces éléments, et de revenir vers nous en cas de difficultés.
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.
EDIT: J'ai placé mon code en une seule macro ici
En remplaçant Sub par Private sub Worksheet_Activate
Cela fonctionne ! Mais est ce sure et optimisé ?
En remplaçant Sub par Private sub Worksheet_Activate
Cela fonctionne ! Mais est ce sure et optimisé ?
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