Filtre selon critères extrait d'un premier filtre
Bonjour,
Je ne dois pas avoir les bons termes, mais je ne vois pas une autre manière de dire : je voudrais un filtre selon des critères variables obtenus à partir d'un premier filtre.
J'ai effectivement un fichier avec l'enregistrement par ligne de factures.
J'aimerais avoir une macro qui filtre tous les projets à solder, tout en gardant l’historique des factures (car, tel que mon fichier est créé, seule la dernière facture indique l'état de facturation du projet, mon premier filtre ne me permet pas d'avoir les factures antérieures pour les projets non soldés)
Ci-joint un extrait de mon fichier et une macro "bricolé à mon niveau", qui marche mais qui met un temps fou à s'exécuter sur le fichier original.
Merci pour votre aide.
Bonsoir earmeek
JE n'ai pas tout compris à l'exposer de ton problème, mais tu peux peut-être accélérer l'exécution en utilisant ce code
Sub ASOLDER()
Dim DLig As Long, TabCht() As String
Dim LigL As Long
'suprimmer filtre
If Sheets("EXTRAIT").FilterMode Then Sheets("EXTRAIT").ShowAllData
'1ER FLITRE > LES DOSSIERS A SOLDER
'Criteria1:="<>- - -",
'Criteria2:="<>>>>",
'Criteria3:="<>SOLDE"
'Sheets("EXTRAIT").Range("$A$21:$X$5000").AutoFilter Field:=21, Criteria1:=Array("<>>>>", "<>- - -", "<>SOLDE"), Operator:=xlFilterValues
'NE MARCHE PAS
ActiveSheet.Range("$A$21:$Z$5000").AutoFilter Field:=1, Criteria1:="A"
ActiveSheet.Range("$A$21:$Z$5000").AutoFilter Field:=21, Criteria1:="<>>>>", Criteria2:="<>SOLDE"
'COPIER LA LISTE OBTENUE EN COLONNE E
Dim DL As Long
DL = Cells(Application.Rows.Count, 21).End(xlUp).Row
Sheets("EXTRAIT").Range("E22:E" & DL).Copy
Sheets("LISTE").Range("A1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' Créer le tableau de la liste des chantier
For LigL = 1 To Sheets("LISTE").Range("A" & Rows.Count).End(xlUp).Row
ReDim Preserve TabCht(LigL)
TabCht(LigL) = Sheets("LISTE").Range("A" & LigL)
Next LigL
' Avec la feuille EXTRAIT
With Sheets("EXTRAIT")
' Dernière ligne
DLig = .Range("V" & Rows.Count).End(xlUp).Row
' Si mode filtre activé, le désactiver
If .FilterMode Then .ShowAllData
'FILTRER SELON LA LISTE
.Range("$A$22:$Z$" & DLig).AutoFilter Field:=1, Criteria1:="A"
.Range("$A$21:$X$" & DLig).AutoFilter Field:=5, Criteria1:=Array(TabCht), Operator:=xlFilterValues
End With
End Sub
A+
Salut BrunoM45,
C'est nickel!
L'exécution n'a rien à voir avec mon truc bricolé.
Merci beaucoup.