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]]] )
$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 |
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 |
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.
#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.")
#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.")