Lire en anglais

Partager via


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 .

Exemple

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 

Méthodes

Propriétés

Voir aussi

Assistance et commentaires

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.