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
| Sub CopierDatePeriode()
Dim rng As Range
Dim rngUsed As Range
Dim strCrit1 As String
Dim strCrit2 As String
Dim Date1 As Variant
Dim Date2 As Variant
' date de début de période; pourrait être une simple référence de cellule au format Date
Date1 = DateValue("2006/01/01")
' date de fin de période; pourrait être une simple référence de cellule au format Date
Date2 = DateValue("2007/12/31")
' Comme la méthode AutoFilter de l'objet Range ne travaille qu'avec le format US des dates
' il faut traduire nos dates et les mettre en texte pour les critères...
strCrit1 = ">=" & CStr(Month(Date1)) & "/" & CStr(Day(Date1)) & "/" & CStr(Year(Date1))
strCrit2 = "<=" & CStr(Month(Date2)) & "/" & CStr(Day(Date2)) & "/" & CStr(Year(Date2))
With Worksheets("Feuil1")
Set rngUsed = .UsedRange
.AutoFilterMode = False
' Cette ligne assume que les dates sont dans la première colonne de la plage (Field:=1)
rngUsed.AutoFilter Field:=1, Criteria1:=strCrit1, Operator:=xlAnd, Criteria2:=strCrit2
' rng ne contiendra désormais que les cellules visibles dans la colonne des dates
Set rng = rngUsed.SpecialCells(xlCellTypeVisible)
rng.Select
rng.Copy
Worksheets("Feuil2").Cells(1).PasteSpecial
' enlever l'indicateur d'opération couper/copier/coller
Application.CutCopyMode = False
' Plus besoin du filtre...
.AutoFilterMode = False
End With
End Sub |
Partager