Traitement de données par macro sur plusieurs feuilles
Bonjour,
Je cherche à faire un petit traitement de dates pour un calendrier sur plusieurs feuilles (pas toutes)
J'ai fait une macro qui fonctionne lorsque je la lance sur une des feuilles (mais que cette feuille)
problème 1 : ma macro ne fait pas la boucle
problème 2 : elle ne tient pas compte des exceptions que je lui indique
je vous mets ma macro ci-dessous.
Sub Masquer_jour()
Dim Feuille As Worksheet
For Each Feuille In Worksheets
'exceptions
If Feuille.Name <> "Recap" And Feuille.Name <> "Data" And Feuille.Name <> "Entete" Then
'instructions
Dim Num_col As Long
Range("$B$11:$AF$304").ClearContents
For Num_col = 30 To 32
If Month(Cells(10, Num_col)) <> Cells(1, 26) Then
Columns(Num_col).Hidden = True
Else
Columns(Num_col).Hidden = False
End If
Next
End If
Next Feuille
End SubMerci à ceux qui peuvent me venir en aide.
Bonjour,
A tester et à adapter.
Public Sub Masquer_jour()
Dim Feuille As Worksheet
Dim Num_col As Long
For Each Feuille In Worksheets
Select Case Feuille.Name
Case "Recap", "Data", "Entete":
Case Else:
With Feuille
.Range("$B$11:$AF$304").ClearContents
For Num_col = 30 To 32
If VBA.Month(.Cells(10, Num_col)).Value <> .Cells(1, 26).Value Then
.Columns(Num_col).Hidden = True
Else
.Columns(Num_col).Hidden = False
End If
Next
End With
End Select
Next Feuille
End SubMerci Jean-Eric,
Ça fonctionne parfaitement, j'ai juste enlevé les deux .Value de la ligne 11 qui me provoquait une erreur d'exécution '424' : Objet requis
Tout fonctionne au top !
Bonjour,
A tester et à adapter.
Public Sub Masquer_jour() Dim Feuille As Worksheet Dim Num_col As Long For Each Feuille In Worksheets Select Case Feuille.Name Case "Recap", "Data", "Entete": Case Else: With Feuille .Range("$B$11:$AF$304").ClearContents For Num_col = 30 To 32 If VBA.Month(.Cells(10, Num_col)).Value <> .Cells(1, 26).Value Then .Columns(Num_col).Hidden = True Else .Columns(Num_col).Hidden = False End If Next End With End Select Next Feuille End Sub
Petite question subsidiaire, la Cells(1,26) est sur la feuille analysée, comment je peux faire si je veux que la macro pointe sur la cellule "K3" de la feuille "Data" ?
Merci pour l'aide, c'est vraiment top
Bon, j'ai fini par trouver la solution.
Il suffit d'affecter une variable à la cellule de la feuille en question et de la rappeler après.
Dans mon exemple la variable s'appelle Num_mois
Public Sub Masquer_jour()
Dim Feuille As Worksheet
Dim Num_col As Long
Dim Num_mois As Byte
Num_mois = Sheets("Data").Range("K3").Value
For Each Feuille In Worksheets
Select Case Feuille.Name
Case "Recap", "Data", "Entete":
Case Else:
With Feuille
.Range("$B$11:$AF$304").ClearContents
For Num_col = 30 To 32
If VBA.Month(.Cells(10, Num_col)) <> Num_mois Then
.Columns(Num_col).Hidden = True
Else
.Columns(Num_col).Hidden = False
End If
Next
End With
End Select
Next Feuille
End Sub