Exécution d'une macro sur différents onglets (nbre variable)

Bonjour à tous, je suis nouveau et loin d'être un expert. Je souhaite réaliser certaines opérations basiques (copie-colle en valeur, filtre, masque..) sur les différents onglets de mon fichier à partir du 3° onglet. Le fichier peut contenir de 3 à x onglets. Tous les onglets à partir du 4° étant des copie du 3°. Le code réalisé (enregistrement, copie de code...) tourne en boucle sur un seul onglet. Mes connaissances ne me permettent pas d'identifier la raison afin de corriger le problème.

Je sollicite donc votre aide et vous remercie par avance pour votre temps et vos conseils.

Dim Ws As Worksheet

    For Each Ws In Worksheets

        If Sheets.Count > 2 Then

        Columns("E:E").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        Range("$A$9:$T$200").AutoFilter Field:=5, Criteria1:="X"
        Columns("G:G").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.EntireColumn.Hidden = True
        Range("E9").Select

        End If

    Next Ws

bonjour,

le nom de la feuille manque dans tes instructions range, columns. En l'absence de nom VBA considère que cela se passe sur la feuille active.

si tu veux de l'aide pour la correction, peux-tu préciser les feuilles impliquées pour chacune de tes instructions range et columns et mettre un classeur exemple représentatif ?

Bonjour le fil, bonjour le forum,

Je plussoie l'Acide, mais comme j'avais commencé a bosser sur ton problème, je t'envoie ma proposition :

Sub Macro1()
Dim I As Integer 'déclare la variable I (Incrément)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)

For I = 3 To Sheets.Count 'boucle sur tous les onglets du classeur (en partant du troisième)
    With Sheets(I) 'prend en compte l'onglet de la boucle
        .Columns("E:E").Copy 'copie la colonne E
        .Range("E1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
           :=False, Transpose:=False 'colle les valeurs
        Application.CutCopyMode = False 'supprime le clignotement lié au "copier"
        .Range("$A$9:$T$200").AutoFilter Field:=5, Criteria1:="X" 'filtre la colonne E avec "X" comme critère
        DC = .Cells(9, Application.Columns.Count).End(xlToRight).Column 'définit la dernière colonne éditée DC de la ligne 9
        .Columns("G:" & DC).Hidden = True 'masque les colonne G à DC
        .Range("E9").Select 'sélectionne la cellue E9
    End With 'fin de la prise en compte de l'onglet de la boucle
Next I 'prochain onglet de la boucle
End Sub

Bonjour h2so4, les feuilles dans lesquelles doivent s'appliquer les instructions se nomment "collection", "collection (2)", "collection (3)" ...etc... en fonction du nombres de feuilles nécessaires (différent à chaque utilisation). Ci-joint un fichier de test. Merci beaucoup.

7test.xlsm (118.89 Ko)

Merci beaucoup ThauTheme, cela solutionne parfaitement mon problème.

Un grand merci à toi et à tous ceux qui ont consacré du temps à mon problème.

Rechercher des sujets similaires à "execution macro differents onglets nbre variable"