1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| Sub FiltreAvance()
Dim FEUILLE_SOURCE As Worksheet
Dim Criteres()
Dim NomFichier()
Dim i As Long
Criteres = Array(Array("<>A", "<>B", "<>C"), _
Array("<>1", "<>2", "<>3"), _
Array("<>carré", "<>rond", "<>triangle"), _
Array("<>machin", "<>bidule", "<>truc"))
NomFichier = Array("alphabet", _
"numérique", _
"geometrie", _
"jaiplusdidée")
' la feuille de depart : IL FAUT METTRE LE NOM REEL DE TA FEUILLE
Set FEUILLE_SOURCE = ThisWorkbook.Worksheets("LaFeuilleInitiale")
' pour chaque lot de critères (= pour chaque fichier à créer)
For i = LBound(Criteres) To UBound(Criteres)
' ouverture d'un nouveau classeur
With Workbooks.Add
' sa première feuille
With .Worksheets(1)
' écriture des en-têtes de la zone de critère
.Cells(1, 1).Resize(1, UBound(Criteres(i)) + 1).Value = FEUILLE_SOURCE.Cells(8, 1).Value
' écritures des valeurs de critères
.Cells(2, 1).Resize(1, UBound(Criteres(i)) + 1).Value = Criteres(i)
FEUILLE_SOURCE.Cells(8,1).CurrentRegion.AdvancedFilter xlFilterCopy, .Cells(1, 1).CurrentRegion, .Cells(4, 1), False
.Cells(1, 1).Resize(3, 1).EntireRow.Delete
.Name = NomFichier(i)
End With
.SaveAs ThisWorkbook.Path & "\" & NomFichier(i) & ".xlsx", xlOpenXMLWorkbook
.Close True
End With
Next i
End Sub |
Partager