Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Masquer colonne avec macros

KiMi249

XLDnaute Nouveau
Bonjour,

Je souhaite rajouter une macros qui me masque les colonnes de N à CM si N1 à CM1 vide.

Merci pour votre aide.
 

Pièces jointes

  • STOCK 2K24.xlsm
    638.3 KB · Affichages: 4

KiMi249

XLDnaute Nouveau
Bonjour ,

Ca fonctionne parfaitement. Comme dit dans un autre commentaire j'ai besoin que cela s'effectue sur les feuilles de lundi à samedi c'est possible d'un seul coup ou je doit lancer la macros par feuille?

Merci.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

nota : si les cellules contiennent une valeur d'erreur (comme chez moi feuille "Mardi" - plage "BX1:CB1"), on les masque aussi. Si vous ne le désirez pas, me le faire savoir.

Essayez ceci :
VB:
Sub DysplayNo()
Dim w, x
   Application.ScreenUpdating = False
   For Each w In Split("lundi,mardi,mercredi,jeudi,vendredi,samedi", ",")
      For Each x In Sheets(w).Range("n1:cm1"): x.EntireColumn.Hidden = Len(IIf(IsError(x), "", x)) = 0: Next
   Next w
End Sub

Sub DysplayYes()
Dim w
   Application.ScreenUpdating = False
   For Each w In Split("lundi,mardi,mercredi,jeudi,vendredi,samedi", ",")
      Sheets(w).Range("n1:cm1").EntireColumn.Hidden = False
   Next w
End Sub

Remarque : si vous voulez afficher les colonnes avec des erreurs en ligne 1:
Utilisez : IIf(IsError(x), 1, x) (l'ancien terme ,"", est devenu ,1,)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour KiMi, MaPomme, Oneida,
Attention, dans votre PJ le Mardi par exemple les cellules BX1 à CB1 contiennet #REF!.

Un essai en PJ avec dans chaque feuille :
VB:
Sub Worksheet_Activate()
    Dim N%
    Application.ScreenUpdating = False
    For N = 14 To 91 ' De N à CM
        On Error Resume Next
        If Cells(1, N) = "" Then
           Cells(1, N).EntireColumn.Hidden = True
        End If
    Next N
End Sub
J'ai pris le parti de masquer les colonnes qui sont en erreur sur la ligne 1.
Le masquage se fait automatiquement lorsqu'on sélectionne une feuille.
 

Pièces jointes

  • STOCK 2K24 (1).xlsm
    653.9 KB · Affichages: 1

KiMi249

XLDnaute Nouveau
Du coup avec la bonne mise en forme... ca marche impeccable.
J'ai une autre question,
Comment rajouter à cette macro, que je veux que ça ce fasse du lundi au samedi aussi?

Sub AfficherEmballages()
Dim i As Integer
Application.ScreenUpdating = True
For i = 3 To 133
If Range("B" & i) > 1 Then Rows(i).Hidden = False
Next i
End Sub
Merci beaucoup pour vos retours.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
je veux que ça ce fasse du lundi au samedi aussi
Une possibilité :
VB:
Sub AfficherEmballages()
Dim i As Integer, Tablo(), Jour%
Application.ScreenUpdating = False
Tablo = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi")
For Jour = 0 To 5
    For i = 3 To 133
        With Sheets(Tablo(Jour))
            If .Range("B" & i) > 1 Then .Rows(i).Hidden = False
        End With
    Next i
Next Jour
End Sub
ou encore , à mettre dans ThisWorkbbok, il sera exécuté à chaque ouverture du fichier :
Code:
Private Sub Workbook_Open()
Dim i As Integer, Tablo(), Jour%
Application.ScreenUpdating = False
Tablo = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi")
For Jour = 0 To 5
    For i = 3 To 133
        With Sheets(Tablo(Jour))
            If .Range("B" & i) > 1 Then .Rows(i).Hidden = False
        End With
    Next i
Next Jour
End Sub
 

KiMi249

XLDnaute Nouveau
J'utilise ces deux macros là, alors si on peut les assembler pour que ça fasse l'afficher/masquer en un seul clique sur chaque feuilles je prend
J'ai pas besoin que ca s'exécute à chaque ouverture du fichier car il sera en partagé.

Sub AfficherEmballages()
Dim i As Integer
Application.ScreenUpdating = True
For i = 3 To 133
If Range("B" & i) > 1 Then Rows(i).Hidden = False
Next i
End Sub

Sub MasquerEmballages()
Dim i As Integer
Application.ScreenUpdating = False
For i = 3 To 133
If Range("B" & i) = "" Then Rows(i).Hidden = True
Next i
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…