Masquer des colonnes à intervalles réguliers

Bonjour,

J'ai besoin d'un peu d'iade pour un code VBA me permettant de masquer des colonnes de manières régulières.

Dans mon tableur j'ai fais une macro pour masquer quelques colonnes qui ne me sont pas utiles en permance (toute petite macro...).

En revanche je voudrais que pour chaque journée, je puisse masquer ou démasquer les colonnes "travail, dispo, cumul, ratio", c'est à dire les colonnes V, W, X, Y puis AG, AH, AI, AJ etc. jusqu'au dernier jour du mois. Je peux le faire comme sur ma macro de base mais c'est un peu long...

Je ne sais pas comment intégrer cette récurrence dansd un code.

16masquer-colonnes.xlsm (288.19 Ko)

Merci d'avance pour vos solutions.

Bonjour,

Essayez ceci:

Private Sub ToggleButton1_Click()
    Dim i As Long, j As Long, DerCol As Long
    Application.ScreenUpdating = False
    DerCol = Range("A5").End(xlToRight).Column
    If Columns(22).Hidden = False Then
        For i = 22 To DerCol - 4 Step 11
            For j = 0 To 3
                Columns(i + j).Hidden = True
            Next j
        Next i
    Else
        For i = 22 To DerCol - 4 Step 11
            For j = 0 To 3
                Columns(i + j).Hidden = False
            Next j
        Next i
    End If
End Sub

Cdlt

Bonjour

Je te propose, quand tu selectionnes la date, (ligne 3) les 4 dernières colonnes se masquent si elles ne sont pas masquées et inversement

1ere selection de samedi 1 avril 2023 masque colonne V à Y

2ème selection on voit les colonnes V à Y (Attention! il faut séléctionner une autre cellule entre 2.)

14masquer-colonnes.xlsm (291.36 Ko)

A+ François

Bonjour à tous les 2,

c'est nickel, j'ai compilé vos 2 solutions car la proposition de Fanfan est bien pratique également. Tout fonctionne. Merci encore.

Je viens de voir un tout petit souci sur la macro de Arturo : il y a simplement la journée du 31 (colonnes MN à MQ) qui ne se masque pas...

Oui, je me suis trompé, dans les lignes suivantes, attention, il y a en 2

For i = 22 To DerCol - 4 Step 11

par

For i = 22 To DerCol - 3 Step 11

Cdlt

C'était bien ça, merci.

Bon week-end.

Par contre ça ne se démasque pas...

Désolé, voilà le correctif:

Private Sub ToggleButton1_Click()
    Dim i As Long, j As Long, DerCol As Long
    Application.ScreenUpdating = False
    DerCol = Range("ZZ3").End(xlToLeft).Column + 11
    If Columns(22).Hidden = True Then
        For i = 22 To DerCol Step 11
            For j = 0 To 3
                Columns(i + j).Hidden = False
            Next j
        Next i
    Else
        For i = 22 To DerCol Step 11
            For j = 0 To 3
                Columns(i + j).Hidden = True
            Next j
        Next i
    End If
End Sub

Cdlt

Bonjour Arturo,

Merci, là c'est parfait. Le code est simple efficace et compréhensible (pour un novice comme moi) du coup je l'ai adapté sans souci en ajoutant des colonnes et autres petites modifications.

Bon week-end.

Rechercher des sujets similaires à "masquer colonnes intervalles reguliers"