Problème de boucle - macro sur filtres

Cumulonymbus

XLDnaute Nouveau
Bonjour à tous !

Je suis dans mes débuts en VBA donc j'espère trouver ici un peu d'aider afin de corriger mon code car je pense qu'il y a un soucis avec mes boucles...

J'explique ma situation: J'ai un onglet "Sheet1" dans lequel se trouve ma liste de données en (N2:N11). Puis j'ai d'autres onglets, chacun avec des noms différents de produits chimiques, et je voudrai que pour que chacun de ces autres onglets-là, le filtre de la colonne 2 prenne la valeur en Sheet1!N2, et ainsi de suite : pour le deuxième onglet que ce soit la valeur Sheet!N3, etc !

Voici mon code :

Code:
Sub Filtrer()

    Dim wSheet As Worksheet
    Dim c As Range

    For Each c In Sheets("Sheet1").Range("N2:N11")

        For Each wSheet In Worksheets
                If wSheet.Name Like "*TRIGONOX*" Then wSheet.Range("$A$1:$G$407").AutoFilter Field:=2, Criteria1:=c.Value
        Next wSheet
        
    Next c

End Sub

Le problème avec mon code, c'est que là quand je lance ça, tous mes onglets de produits chimique filtrent selon la dernière valeur de ma liste ! D'où le fait que je pense qu'il s'agit d'un soucis dans ma boucle...

J'espère avoir été la plus claire possible !

Et énorme merci d'avance à celui/celle qui saura m'aider !! :) :rolleyes:
 

Cumulonymbus

XLDnaute Nouveau
Re : Problème de boucle - macro sur filtres

Bonjour francedemo,

Voila, en pièce jointe il y a :

- Un document word avec le code de ma macro où la partie en rouge est à vérifier, le reste fonctionne

Code défectueux:
Code:
' Crée les copies d'onglets avec noms différents

Dim c As Range
Dim k As Range
Dim Feuil1 As Sheets

For Each c In Sheets("Sheet1").Range("K2:K100")

    
    If Not IsEmpty(c) Then Sheets("Feuil1").Select
        Sheets("Feuil1").Copy After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = c.Value


    For Each k In Sheets("Sheet1").Range("N2:N100")

            If Not IsEmpty(k) Then
                    If ActiveSheet.Name Like "*TRIGONOX*" Then
                    ActiveSheet.Range("A:G").AutoFilter Field:=2, Criteria1:=k.Value
                    Else
                    End If
            Else
            End If
                    
    Next k

Next c

- Le document tel qu'il est avec son problème
- Et le document tel que je voudrais qu'il soit après la macro

Grand merci d'avance !!
 
Dernière édition:

francedemo

XLDnaute Occasionnel
Re : Problème de boucle - macro sur filtres

re,

si j'ai compris ce que tu veux faire, essaye:
Code:
' Crée les copies d'onglets avec noms différents

Dim c As Range
Dim k As Range
Dim Feuil1 As Sheets

For Each c In Sheets("Sheet1").Range("K2:K100")
   If Not IsEmpty(c) Then
      Sheets("Sheet1").Select
      Sheets("Sheet1").Copy After:=Worksheets(Worksheets.Count)
      ActiveSheet.Name = c.Value
   End If
   For Each k In Sheets("Sheet1").Range("N2:N100")
      If Not IsEmpty(k) Then
         If ActiveSheet.Name Like "*TRIGONOX*" And k Like ActiveSheet.Name & "*" Then ActiveSheet.Range("A:G").AutoFilter Field:=2, Criteria1:=k.Value
      End If
   Next k
Next c
à la place du même bloc dans ton module
juste 2 / 3 remarques:
- dans ton code, j'ai trouvé des "Feuil1" et des "Sheet1"...
- la structure de If...then...else...end if n'a pas besoin de "else" si tu n'as pas d’alternative à ta condition "if"
- j'ai juste ajouté une condition sur "k" pour valider le tri

à +
tiens moi au courant
 

Discussions similaires

Réponses
7
Affichages
312

Statistiques des forums

Discussions
312 097
Messages
2 085 257
Membres
102 842
dernier inscrit
Miguelita