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 Sub

Merci à 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 Sub

Merci 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

Rechercher des sujets similaires à "traitement donnees macro feuilles"