XL 2013 Masquer colonnes en VBA

  • Initiateur de la discussion Initiateur de la discussion Fabien62
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Fabien62

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à masquer des colonnes ne contenant pas de jours dans certains mois comme en févier ou lorsqu'il y a 30 jours dans l'onglet planning CP.

Avec la formule, le jour n'apparaît pas mais la colonne est tout de même vide, même si les cases jours contiennent une formule.

J'étais partis de ce code en VBA :

Sub Masq()
For Each n In [B4:AF4]
If n = "" Then
n.Columns.Hidden = True
Else
n.Columns.Hidden = False
End If
Next
End Sub

La colonne disparaît bien si je supprime la formule en AF4 par exemple mais c'est une chose que je ne peux pas réaliser, je cherche à trouver une solution pour régler ce problème et également à avoir une rafraîchissement de l'affichage si je change de mois.

Je suis débutant en VBA et essaye de progresser.

Merci pour votre aide

Cordialement
 

Pièces jointes

Bonjour à tous,

Dans le module de la feuille :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$2" Then
        For Each n In [B4:AF4]
            If n = 0 Then
                n.Columns.Hidden = True
            Else
                n.Columns.Hidden = False
            End If
        Next
    End If
End Sub

A+ à tous
 
Bonjour à tous,

Nouveau code :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpDating = False
    If Target.Address = "$B$2" Then
        For Each n In [B4:AF4]
            If n = 0 Then
                n.Columns.Hidden = True
            Else
                n.Columns.Hidden = False
            End If
        Next
    End If
End Sub

A+ à tous
 
Bonsoir, Bloque le rafrichissement de l'écran en début de procédure et tu le remets à la fin.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    If Target.Address = "$B$2" Then
        For Each n In [B4:AF4]
            If n = 0 Then
                n.Columns.Hidden = True
            Else
                n.Columns.Hidden = False
            End If
        Next
    End If
    Application.ScreenUpdating = True
End Sub
🙂😀 JCGM, bonsoir on a évité une collusion
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
357
Réponses
2
Affichages
329
Retour