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 42 43 44 45 46 47 48 49 50 51 52 53 54
| Sub CopieDonneesFiltree()
Dim LastRow As Long, I As Long
Dim Donnees As Range
Dim Code As String, Annee As String
'===> Ecran >>> [ InActif ] -----------------------------------------------
Application.ScreenUpdating = False
With Worksheets("Data")
'* Initialiser les variables
Code = [N9]
Annee = [M9]
'*** Plage avec une ligne d'entete afin que le filtre ne la prenne pas en compte
Set Donnees = .Range(.Cells(2, 7), .Cells(.Rows.Count, 10).End(xlUp))
'* ôter le filtre
Donnees.AutoFilter
'* Filtrage sur la colonne DE LA PLAGE DE DONNEES
Donnees.AutoFilter 3, Code
Donnees.AutoFilter 4, Annee
'* Derniere ligne
LastRow = .Cells(.Rows.Count, 7).End(xlUp).Row
'* #1 - Copier les résultats
.Range("G2:G" & LastRow).SpecialCells(xlCellTypeVisible).Copy .Range("L15")
'* #2 - Données SANS entete colonne
.Range("G3:G" & LastRow).SpecialCells(xlCellTypeVisible).Copy .Range("M15")
Set Donnees = .Range(.Cells(3, 7), .Cells(.Rows.Count, 7).End(xlUp))
Donnees.SpecialCells(xlCellTypeVisible).Copy [O15]
'* #3 - Toutes les colonnes de la plage de données AVEC entete
Set Donnees = .Range(.Cells(2, 7), .Cells(.Rows.Count, 10).End(xlUp))
Donnees.SpecialCells(xlCellTypeVisible).Copy [L22]
'* #4 - Toutes les colonnes de la plage de données SANS entete
Set Donnees = .Range(.Cells(3, 7), .Cells(.Rows.Count, 10).End(xlUp))
Donnees.SpecialCells(xlCellTypeVisible).Copy [L28]
'* ôter le filtre
Donnees.AutoFilter
End With
'* Libère mémoire
Set Donnees = Nothing
End Sub |
Partager