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
| Dim FilterArray()
'-----------------------------------------------------------------------------------------------
Sub Filters_Memorize()
'-----------------------------------------------------------------------------------------------
' Mémorise les filtres de la feuille active.
'-----------------------------------------------------------------------------------------------
Dim f As Integer
With ActiveSheet.AutoFilter.Filters
ReDim FilterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
FilterArray(f, 1) = .Criteria1
If .Operator Then
FilterArray(f, 2) = .Operator
FilterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End Sub
'-----------------------------------------------------------------------------------------------
Sub Filters_Restore()
'-----------------------------------------------------------------------------------------------
' Restore les filtres de la feuille active préalablement mémorisés.
'-----------------------------------------------------------------------------------------------
Dim f As Integer
For f = 1 To UBound(FilterArray(), 1)
If Not IsEmpty(FilterArray(f, 1)) Then
If FilterArray(f, 2) Then
ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=f, _
Criteria1:=FilterArray(f, 1), _
Operator:=FilterArray(f, 2), _
Criteria2:=FilterArray(f, 3)
Else
ActiveSheet.Range(ActiveSheet.AutoFilter.Range.Address).AutoFilter Field:=f, Criteria1:=FilterArray(f, 1)
End If
End If
Next
End Sub
'----------------------------------------------------------------------------------------------- |
Partager