Pour OOBasic (CALC & co) j'ai souvent manqué de fonctions simples et indispensables alors je me les suis créées.
Celle ci liste un répertoire pour trouver les fichier et/ou sous-répertoires.
PARAMETRES :
- rep (String) = répertoire à lire
- filter (String) optionnel, un filtre. "" par défaut
- attr (Integer) optionnel, attribut du fichier. 0 par défaut, 16 pour lister les répertoires
SORTIE :
- array(String) (donc un variant)
Source / Exemple :
REM liste les fichiers d'un répertoire
REM attr = 16 pour lister les sous-répertoires
Function DirList(rep as string, optional filter as string, optional attr as integer) as variant
Dim sValue as string
Dim count as long, i as long
On Error Goto ErrHandler
If IsMissing(attr) Then attr = 0
If IsMissing(filter) Then ' compter le nb de fichiers
count = DirListCount(rep, "", attr)
Else
count = DirListCount(rep, filter, attr)
End If
Dim ret(count) as string ' déclaration du tableau
If IsMissing(filter) Then
sValue = Dir$(rep, attr)
Else
sValue = Dir$(rep & filter, attr)
End If
Do
If sValue <> "." and sValue <> ".." Then
ret(i) = sValue
i = i + 1
End If
sValue = Dir$
Loop Until sValue = ""
DirList = ret
Exit Function
ErrHandler:
Msgbox "Erreur " & err & " (L." & erl & ") : " & error(err) & chr(13) & sValue & " (" & count & ")"
End Function
REM Compter les fichiers dans un répertoire
REM attr = 16 pour lister les sous-répertoires
Function DirListCount(rep as string, optional filter as string, optional attr as integer) as long
Dim sValue as string
Dim count as long
On Error Goto ErrHandler
If IsMissing(attr) Then attr = 0
If IsMissing(filter) Then
sValue = Dir$(rep, attr)
Else
sValue = Dir$(rep & filter, attr)
End If
Do
If sValue <> "." and sValue <> ".." Then
'If GetAttr( rep & sValue) <> attr Then
count = count + 1
End If
sValue = Dir$
Loop Until sValue = ""
DirListCount = count-1
Exit Function
ErrHandler:
Msgbox "Erreur " & err & " (L." & erl & ") : " & error(err) & chr(13) & sValue & " (" & count & ")"
End Function
Conclusion :
EXEMPLE :
resultat = DirList("c:\temp", "*.csv")
resultat = DirList("c:\temp", "", 16)
...
une 2e fonction compte le nombre de résultats : fonction DirListCount() avec les mêmes paramètres.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.