Aide et conseils concernant AutoIt et ses outils.
-
jcaspar
- Niveau 7

- Messages : 449
- Enregistré le : mar. 23 sept. 2008 17:58
-
Status :
Hors ligne
#1
Message
par jcaspar »
B

onjour à tous
Je souhaiterais filtrer les données dans excel
dans le cas présent je souhaiterais filtrer les données de sorte que seules les fichiers ayant un chemin de plus de 250 caractères apparaissent
je pensais utiliser la méthode autofilter mais ma syntaxe doit être incorecte .
En vous remerciant pour vos idées et conseils
Jean-Marc
► Afficher le texte
Code : Tout sélectionner
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <Excel.au3>
Local Const $sMessage = "Sélectionnez un répertoire"
Local $sFileSelectFolder = FileSelectFolder($sMessage, "")
;creation d'un tableau listant tous les fichiers du répertoire avec option récursive sélectionné
Local $aArray = _FileListToArrayRec($sFileSelectFolder, "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
;Ajout d'une colonne
_ArrayColInsert($aArray, 1)
For $i = 1 To $aArray[0][0]
$aArray[$i][1] = StringLen($aArray[$i][0])
Next
_ArraySort($aArray, 0, 0, 0, 1)
_ArrayDisplay($aArray, "Fichiers triés")
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel Création", "Erreur de création." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookNew($oExcel)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel Creation: ", "Erreur de creation nouvel onglet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_Close($oExcel)
Exit
EndIf
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray, "B1")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 3", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "Excel Ecriture", "Données transférées sur Excel.")
local $SheetName = "Feuil1"
local $total = $oExcel.Worksheets($SheetName).UsedRange.Columns("A:A").Cells.Count
$oExcel.Columns("C:C").Select
$oExcel.Rows("1:" & $total).Delete ; change 2: to 1: if you dont want to keep the first row (headers)
$oExcel.ActiveSheet.Range("$C$1:$C$500").AutoFilter(2,">150")
$oExcel.Columns("A:A").Select
$oExcel.Selection.Delete
Modifié en dernier par
jcaspar le jeu. 29 oct. 2015 22:40, modifié 1 fois.
-
jcaspar
- Niveau 7

- Messages : 449
- Enregistré le : mar. 23 sept. 2008 17:58
-
Status :
Hors ligne
#2
Message
par jcaspar »
V

oici la solution que j'ai trouvée ... qui me semble politiquement correcte
► Afficher le texte
Code : Tout sélectionner
#include <MsgBoxConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <Excel.au3>
Local Const $sMessage = "Sélectionnez un répertoire"
Local $sFileSelectFolder = FileSelectFolder($sMessage, "")
;creation d'un tableau listant tous les fichiers du répertoire avec option récursive sélectionné
Local $aArray = _FileListToArrayRec($sFileSelectFolder, "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
;Ajout d'une colonne
_ArrayColInsert($aArray, 1)
For $i = 1 To $aArray[0][0]
$aArray[$i][1] = StringLen($aArray[$i][0])
Next
_ArraySort($aArray, 0, 0, 0, 1)
_ArrayDisplay($aArray, "Fichiers triés")
Local $oExcel = _Excel_Open()
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
Local $oWorkbook = _Excel_BookNew($oExcel)
If @error Then
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example", "Error creating the new workbook." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
_Excel_Close($oExcel)
Exit
EndIf
_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aArray, "B1")
If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 3", "Error writing to worksheet." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeWrite Example 3", "2D array successfully written.")
$input=InputBox("Filtre","")
$oExcel.ActiveSheet.Range("$c$1:$c$10").AutoFilter (1,$input, 1)