Objet AutoFilter (Excel)
Cet objet représente le filtre automatique de la feuille de calcul spécifiée.
Notes
Lorsque AutoFilter est utilisé avec des dates, le format doit être compatible avec l’utilisation des séparateurs de date anglais ("/") au lieu des paramètres locaux ("."). "2/2/2007" serait une date valide, mais pas "2.2.2007".
Notes
L’utilisation d’objets (par exemple, l’objet Interior ) nécessite l’ajout d’une référence à un objet . Vous trouverez plus d’informations sur l’affectation d’une référence d’objet à une variable ou à une propriété dans l’instruction Set .
Utilisez la propriété AutoFilter de l’objet Worksheet pour renvoyer l’objet AutoFilter . Utilisez la propriété Filters pour renvoyer une collection de filtres de colonne individuels. Utilisez la propriété Range pour renvoyer l'objet Range qui représente l'intégralité de la plage filtrée.
L’exemple suivant stocke l’adresse et les critères de filtrage pour le filtrage actuel, puis applique de nouveaux filtres.
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Sub ChangeFilters()
Set w = Worksheets("Crew")
With w.AutoFilter
currentFiltRange = .Range.Address
With .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 With
w.AutoFilterMode = False
w.Range("A1").AutoFilter field:=1, Criteria1:="S"
End Sub
Pour créer un objet AutoFilter pour une feuille de calcul, vous devez activer le filtrage automatique pour une plage de la feuille de calcul manuellement ou à l’aide de la méthode AutoFilter de l’objet Range . L'exemple suivant montre comment utiliser les valeurs stockées dans les variables de module de l'exemple précédent pour rétablir le filtre automatique d'origine de la feuille de calcul « Crew ».
Sub RestoreFilters()
Set w = Worksheets("Crew")
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.