Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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?
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,)
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.
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,)
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.
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
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
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
- 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