UDF > Excel >


_Excel_FilterSet

Installe/désinstalle les définitions de filtres et filtre la plage

#include <Excel.au3>
_Excel_FilterSet ( $oWorkbook, $vWorksheet, $vRange, $iField [, $sCriteria1 = Default [, $iOperator = Default [, $sCriteria2 = Default]]] )

Paramètres

$oWorkbook Objet classeur Excel
$vWorksheet Nom, indice ou objet feuille de calcul à filtrer. Si la valeur est le mot-clé Default, la feuille active sera filtrée
$vRange Un objet plage ou une plage au format $xlA1 pour spécifier les colonnes à filtrer.
    Utilisez le mot-clé Default pour filtrer toutes les colonnes de la feuille de calcul spécifiée
$iField Décalage entier du champ sur lequel vous voulez baser le filtre (le champ le plus à gauche est un champ).
    Si cette valeur est 0, tous les filtres automatiques sur la feuille de calcul seront supprimés
$sCriteria1 [optionnel] Le critère (une chaîne ou un tableau de chaînes). Utilisez "=" pour trouver des champs vides, ou utilisez "<>" pour trouver des champs non vides.
    Si cet argument est omis, le critère est All.
    Si l'opérateur est xlTop10Items, Criteria1 spécifie le nombre d'éléments (par exemple,"10")
$iOperator [optionnel] L'une des constantes de l'énumération XlAutoFilterOperator précisant le type de filtre
$sCriteria2 [optionnel] Le deuxième critère (une chaîne). Utilisez Criteria1 et Operator pour construire des critères composés

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0 et définit @error <> 0.
@error: 1 - $oWorkbook n'est pas un objet ou n'est pas un objet classeur
2 - Le nom ou l'index $vWorksheet n'est pas valide ou $vWorksheet n'est pas un objet feuille de calcul. @extended contient le code d'erreur COM
3 - $vRange n'est pas valide. @extended contient le code d'erreur COM
4 - Erreur retournée par la méthode Filter. @extended contient le code d'erreur COM

Remarque

Filtre dynamique:
Pour filtrer les colonnes de données, vous définissez $iOperator à $xlFilterDynamic et $sCriteria1 à toute valeur de l'énumération XlDynamicFilterCriteria.
Voir l'exemple 5 pour plus de détails.

En relation

_Excel_FilterGet

Exemples

Exemple 1

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Crée un objet Excel et ouvre un classeur
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple", "Erreur lors de la création de l'objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple", "Pressez Enter pour définir le premier filtre!")

; *****************************************************************************
; Filtre la feuille de calcul active complète sur la colonne 1.
; Montre seulemnt les lignes dont le contenu est > 20 et < 40 dans la colonne spécifiée.
; *****************************************************************************
_Excel_FilterSet($oWorkbook, Default, "A1:E30", 1, ">20", 1, "<40")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 1", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 1", "Filtré en colonne 'A'. Affiche seulement les lignes avec valeurs >20 et <40.")

; *****************************************************************************
; Ajoute un filtre à la colonne 2.
; Montre seulement les lignes dont le contenu est < 310 dans la colonne spécifiée.
; *****************************************************************************
_Excel_FilterSet($oWorkbook, Default, Default, 2, "<310")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 2", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 1", "Filtre ajouté sur colonne 'B'. Affiche seulement les lignes avec des valeurs <310.")

; *****************************************************************************
; Retire le filtre de la colonne 1.
; *****************************************************************************
_Excel_FilterSet($oWorkbook, Default, Default, 1)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 3", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 1", "Filtre retiré sur la colonne 'A'.")

; *****************************************************************************
; Affiche seulement les valeurs sélectionnées (20, 40 et 60) de la colonne 2.
; *****************************************************************************
Local $aShow[] = ["20", "40", "60"]
_Excel_FilterSet($oWorkbook, Default, Default, 2, $aShow, $xlFilterValues)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 4", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 1", "Filtre défini sur column 'B' pour afficher seulement les valeurs (20, 40 et 60).")

; *****************************************************************************
; Supprime tous les filtres.
; *****************************************************************************
_Excel_FilterSet($oWorkbook, Default, Default, 0)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 5", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 1", "Tous les filtres sont retirés.")


Exemple 2

#include <Excel.au3>
#include <MsgBoxConstants.au3>

; Crée un objet Excel et ouvre un classeur exemple
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple", "Erreur lors de la création de l'objet Excel." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls", True)
If @error Then
    MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple", "Erreur lors de l'ouverture du classeur '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    _Excel_Close($oExcel)
    Exit
EndIf
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple", "Press Enter to set the first filter!")

; *****************************************************************************
; Filtre la colonne M par date. Montre toutes les dates en octobre 2013 et 2014.
; 0 ans, 1 mois, 2 jours, 3 heures, 4 minutes, 5 secondes
; *****************************************************************************
Local $aShow[] = [1, "01/10/2017", 1, "01/10/2018"]
_Excel_FilterSet($oWorkbook, Default, Default, 13, Default, $xlFilterValues, $aShow)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 6", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 2", "Colonne 'M' filtrée par date. Affiche toutes les dates d'Octobre de 2017 et 2018.")

; *****************************************************************************
; Filtre la colonne M par date. Montre toutes les dates de l'an dernier.
; *****************************************************************************
_Excel_FilterSet($oWorkbook, Default, Default, 13, $xlFilterLastYear, $xlFilterDynamic)
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 7", "Erreur lors du filtrage des données." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "UDF Excel: _Excel_FilterSet-Exemple 2", "Colonne 'M' filtrée par date. Affiche toutes les dates de l'année dernière.")