Lister tous les fichiers d'un repertoire

Contenu du snippet

Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const INVALID_HANDLE_VALUE = -1

Private Type WIN32_FIND_DATAW
  dwFileAttributes As Long
  ftCreationTime As Currency
  ftLastAccessTime As Currency
  ftLastWriteTime As Currency
  nFileSizeHigh As Long
  nFileSizeLow As Long
  dwReserved0 As Long
  dwReserved1 As Long
  cFileName(519) As Byte
  cAlternate(27) As Byte
End Type

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileW" (ByVal lpFileName As Long, lpFindFileData As WIN32_FIND_DATAW) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileW" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATAW) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

Private Function GetDirectoryFiles(ByVal DirectoryName As String, ByRef Files() As String, Optional ByVal Filter As String = "*") As Long
  Dim fData As WIN32_FIND_DATAW
  Dim hSearch As Long
  Dim FilesCount As Long
  Dim File As String
  Erase Files
  hSearch = FindFirstFile(StrPtr(DirectoryName & "\" & Filter), fData)
  If Not hSearch = INVALID_HANDLE_VALUE Then
    Do
      If Not (fData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
        File = fData.cFileName
        File = VBA.Left$(File, InStr(File, Chr$(0)) - 1)
        ReDim Preserve Files(FilesCount)
        Files(FilesCount) = File
        FilesCount = FilesCount + 1
      End If
    Loop While FindNextFile(hSearch, fData)
    Call FindClose(hSearch)
  End If
  GetDirectoryFiles = FilesCount
End Function

Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

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.