Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

lister contenu répertoire

13 réponses
Avatar
Elicend_News
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire (ex, un
CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________

10 réponses

1 2
Avatar
Boss Hog
Salut,

tu parle de macro excel ou word ??
si tu à accès au fso FileSystemObject
il te suffit d'utiliser une For Each

@+
Boss Hog
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4173c47a$0$29526$
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire (ex, un
CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________





Avatar
ng
Salut,

Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour la
recursivité car Dir$() ne marche pas dans ce cas).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Salut,

tu parle de macro excel ou word ??
si tu à accès au fso FileSystemObject
il te suffit d'utiliser une For Each

@+
Boss Hog
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4173c47a$0$29526$
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire
(ex, un CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________




Avatar
ng
Salut,

On utilise les APIs FindFirstFile(), FindNextFile() et FindClose().

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Elicend_News wrote:
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire
(ex, un CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________


Avatar
Boss Hog
salut,
si j'ai bien lu il parle de macro alors si tu peut accéder aux API en VBA
dit moi comment,
de plus cet espece de snobisme qui consiste à ré-inventer la roue me fait
plutot rire,

FSO c'est len(quoi que sur des job simple cela suffit largement) mais sa
marche et les API windows ne sont pas forcément à la porté de tous les
developpeurs(faudrai peut etre pas l'oublier).
j'ai API guide et tout le toutim et des fois il m'arrive d'utilisé le FSO et
j'en suis pas mort(pas encore).

quand à ta réponse je doit dire quel à le merite d'etre super claire:
Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour la
recursivité car Dir$() ne marche pas dans ce cas).

me voila équiper pour l'hiver, merci.

cdlt
Boss Hog

"ng" wrote in message
news:
Salut,

Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour la
recursivité car Dir$() ne marche pas dans ce cas).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

> Salut,
>
> tu parle de macro excel ou word ??
> si tu à accès au fso FileSystemObject
> il te suffit d'utiliser une For Each
>
> @+
> Boss Hog
> "Elicend_News" <inconicoAfreePOINTfr> wrote in message
> news:4173c47a$0$29526$
>> Bonjour,
>>
>> savez vous s'il est possible de lister le contenu d'un répertoire
>> (ex, un CD, avec les sous répertoires) avec une macro ?
>>
>> merci d'avance!
>>
>> @ plus
>> Elicend
>> ________________________
>>
>> Attention adresse e-mail :
>> inconicoAfreePOINTfr
>> A = @
>> POINT = .
>> ________________________




Avatar
ng
Salut,

Les APIs fonctionnent très bien sous VBA, voici un module de ma création
utilisable tel quel :

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA"
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long)
As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA"
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, vbNullChar) > 0) Then _
OriginalStr = Left$(OriginalStr, InStr(OriginalStr, vbNullChar) - 1)
StripNulls = OriginalStr
End Function

Public Function ListFolder(ByVal strFolderPath As String, Optional
bRecursive As Boolean = False, Optional bDirOnly As Boolean = False) As
Boolean
Dim dwID As Long, lpFindDATA As WIN32_FIND_DATA
Dim bContinue As Boolean
Dim strFileName As String
If Right$(strFolderPath, 1) <> "" Then _
strFolderPath = strFolderPath & ""
Do
If dwID = 0 Then
dwID = FindFirstFile(strFolderPath & "*", lpFindDATA)
bContinue = True
Else
bContinue = FindNextFile(dwID, lpFindDATA)
End If
strFileName = StripNulls(lpFindDATA.cFileName)
If strFileName <> "." And strFileName <> ".." And bContinue Then
If bDirOnly Then
If (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then _
Call FileFound(strFolderPath & strFileName)
Else
Call FileFound(strFolderPath & strFileName)
End If
If bRecursive And (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then
Call ListFolder(strFolderPath & strFileName, True, bDirOnly)
End If
End If
Loop Until Not bContinue
Call FindClose(dwID)
End Function

Public Sub FileFound(strFileName As String)
Debug.Print strFileName
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

salut,
si j'ai bien lu il parle de macro alors si tu peut accéder aux API en
VBA dit moi comment,
de plus cet espece de snobisme qui consiste à ré-inventer la roue me
fait plutot rire,

FSO c'est len(quoi que sur des job simple cela suffit largement) mais
sa marche et les API windows ne sont pas forcément à la porté de tous
les developpeurs(faudrai peut etre pas l'oublier).
j'ai API guide et tout le toutim et des fois il m'arrive d'utilisé le
FSO et j'en suis pas mort(pas encore).

quand à ta réponse je doit dire quel à le merite d'etre super claire:
Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour
la recursivité car Dir$() ne marche pas dans ce cas).

me voila équiper pour l'hiver, merci.

cdlt
Boss Hog

"ng" wrote in message
news:
Salut,

Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour la
recursivité car Dir$() ne marche pas dans ce cas).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Salut,

tu parle de macro excel ou word ??
si tu à accès au fso FileSystemObject
il te suffit d'utiliser une For Each

@+
Boss Hog
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4173c47a$0$29526$
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire
(ex, un CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________








Avatar
ng
Salut,

J'oublais, voici un exemple :

Utilisation : Call ListFolder("c: mon chemin", True (recursivité),
True(lister seulement les dossiers))

Il suffit de mettre le code ci-dessous dans un module :

option explicit

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA"
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long)
As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA"
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, vbNullChar) > 0) Then _
OriginalStr = Left$(OriginalStr, InStr(OriginalStr, vbNullChar) - 1)
StripNulls = OriginalStr
End Function

Public Function ListFolder(ByVal strFolderPath As String, Optional
bRecursive As Boolean = False, Optional bDirOnly As Boolean = False) As
Boolean
Dim dwID As Long, lpFindDATA As WIN32_FIND_DATA
Dim bContinue As Boolean
Dim strFileName As String
If Right$(strFolderPath, 1) <> "" Then _
strFolderPath = strFolderPath & ""
Do
If dwID = 0 Then
dwID = FindFirstFile(strFolderPath & "*", lpFindDATA)
bContinue = True
Else
bContinue = FindNextFile(dwID, lpFindDATA)
End If
strFileName = StripNulls(lpFindDATA.cFileName)
If strFileName <> "." And strFileName <> ".." And bContinue Then
If bDirOnly Then
If (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then _
Call FileFound(strFolderPath & strFileName)
Else
Call FileFound(strFolderPath & strFileName)
End If
If bRecursive And (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then
Call ListFolder(strFolderPath & strFileName, True, bDirOnly)
End If
End If
Loop Until Not bContinue
Call FindClose(dwID)
End Function

Public Sub FileFound(strFileName As String)
Debug.Print strFileName
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

ng wrote:
Salut,

On utilise les APIs FindFirstFile(), FindNextFile() et FindClose().


Elicend_News wrote:
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire
(ex, un CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________




Avatar
Boss Hog
Super,
fallait répondre ceci au mec qui posait la question, par contre si c'est un
débutant,
bonjour la simplicité, de plus crois tu vraiment que le FSO n'est pas une
interface entre le developpeur et l'API windows ?!
tes fonctions(j'ai pas tout lu) fournissent elles des propriétés bien
pratique tel ShortPath, ShortName

comment boucle ont dessus ?
ajoute un peut d'aide au cas ou le destinataire soit plus ou moin debutant.

parce qu'à premiere vue et meme si il s'avère que c'est de la balle, c'est
pas clair

@+
Boss Hog




"ng" wrote in message
news:
Salut,

Les APIs fonctionnent très bien sous VBA, voici un module de ma création
utilisable tel quel :

Private Declare Function FindFirstFile Lib "kernel32" Alias


"FindFirstFileA"
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As


Long)
As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA"
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long

Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, vbNullChar) > 0) Then _
OriginalStr = Left$(OriginalStr, InStr(OriginalStr, vbNullChar) -


1)
StripNulls = OriginalStr
End Function

Public Function ListFolder(ByVal strFolderPath As String, Optional
bRecursive As Boolean = False, Optional bDirOnly As Boolean = False) As
Boolean
Dim dwID As Long, lpFindDATA As WIN32_FIND_DATA
Dim bContinue As Boolean
Dim strFileName As String
If Right$(strFolderPath, 1) <> "" Then _
strFolderPath = strFolderPath & ""
Do
If dwID = 0 Then
dwID = FindFirstFile(strFolderPath & "*", lpFindDATA)
bContinue = True
Else
bContinue = FindNextFile(dwID, lpFindDATA)
End If
strFileName = StripNulls(lpFindDATA.cFileName)
If strFileName <> "." And strFileName <> ".." And bContinue Then
If bDirOnly Then
If (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then _
Call FileFound(strFolderPath & strFileName)
Else
Call FileFound(strFolderPath & strFileName)
End If
If bRecursive And (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then
Call ListFolder(strFolderPath & strFileName, True,


bDirOnly)
End If
End If
Loop Until Not bContinue
Call FindClose(dwID)
End Function

Public Sub FileFound(strFileName As String)
Debug.Print strFileName
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

> salut,
> si j'ai bien lu il parle de macro alors si tu peut accéder aux API en
> VBA dit moi comment,
> de plus cet espece de snobisme qui consiste à ré-inventer la roue me
> fait plutot rire,
>
> FSO c'est len(quoi que sur des job simple cela suffit largement) mais
> sa marche et les API windows ne sont pas forcément à la porté de tous
> les developpeurs(faudrai peut etre pas l'oublier).
> j'ai API guide et tout le toutim et des fois il m'arrive d'utilisé le
> FSO et j'en suis pas mort(pas encore).
>
> quand à ta réponse je doit dire quel à le merite d'etre super claire:
> Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour
> la recursivité car Dir$() ne marche pas dans ce cas).
>
> me voila équiper pour l'hiver, merci.
>
> cdlt
> Boss Hog
>
> "ng" wrote in message
> news:
>> Salut,
>>
>> Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour la
>> recursivité car Dir$() ne marche pas dans ce cas).
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>>> Salut,
>>>
>>> tu parle de macro excel ou word ??
>>> si tu à accès au fso FileSystemObject
>>> il te suffit d'utiliser une For Each
>>>
>>> @+
>>> Boss Hog
>>> "Elicend_News" <inconicoAfreePOINTfr> wrote in message
>>> news:4173c47a$0$29526$
>>>> Bonjour,
>>>>
>>>> savez vous s'il est possible de lister le contenu d'un répertoire
>>>> (ex, un CD, avec les sous répertoires) avec une macro ?
>>>>
>>>> merci d'avance!
>>>>
>>>> @ plus
>>>> Elicend
>>>> ________________________
>>>>
>>>> Attention adresse e-mail :
>>>> inconicoAfreePOINTfr
>>>> A = @
>>>> POINT = .
>>>> ________________________




Avatar
ng
Salut,

Non le FSO n'est pas simplement un interface, de plus il en existe
diffèrentes versions ce qui provoque des erreurs si utilisé en early
binding.

pratique tel ShortPath, ShortName


Ce n'est pas très compliqué à coder il suffit de se faire un module une
bonne fois pour toute pis c'est bon...


Ma fonction déclanche simplemement une procédure (FileFound()) à chaque
fichier trouvé, il suffit d'en faire ce qu'on en veut.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Super,
fallait répondre ceci au mec qui posait la question, par contre si
c'est un débutant,
bonjour la simplicité, de plus crois tu vraiment que le FSO n'est pas
une interface entre le developpeur et l'API windows ?!
tes fonctions(j'ai pas tout lu) fournissent elles des propriétés bien
pratique tel ShortPath, ShortName

comment boucle ont dessus ?
ajoute un peut d'aide au cas ou le destinataire soit plus ou moin
debutant.

parce qu'à premiere vue et meme si il s'avère que c'est de la balle,
c'est pas clair

@+
Boss Hog




"ng" wrote in message
news:
Salut,

Les APIs fonctionnent très bien sous VBA, voici un module de ma
création utilisable tel quel :

Private Declare Function FindFirstFile Lib "kernel32" Alias
"FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As
WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib
"kernel32" (ByVal hFindFile As Long) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias
"FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As
WIN32_FIND_DATA) As Long

Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, vbNullChar) > 0) Then _
OriginalStr = Left$(OriginalStr, InStr(OriginalStr,
vbNullChar) - 1) StripNulls = OriginalStr
End Function

Public Function ListFolder(ByVal strFolderPath As String, Optional
bRecursive As Boolean = False, Optional bDirOnly As Boolean = False)
As Boolean
Dim dwID As Long, lpFindDATA As WIN32_FIND_DATA
Dim bContinue As Boolean
Dim strFileName As String
If Right$(strFolderPath, 1) <> "" Then _
strFolderPath = strFolderPath & ""
Do
If dwID = 0 Then
dwID = FindFirstFile(strFolderPath & "*", lpFindDATA)
bContinue = True
Else
bContinue = FindNextFile(dwID, lpFindDATA)
End If
strFileName = StripNulls(lpFindDATA.cFileName)
If strFileName <> "." And strFileName <> ".." And bContinue
Then If bDirOnly Then
If (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then _
Call FileFound(strFolderPath & strFileName)
Else
Call FileFound(strFolderPath & strFileName)
End If
If bRecursive And (lpFindDATA.dwFileAttributes And
FILE_ATTRIBUTE_DIRECTORY) Then
Call ListFolder(strFolderPath & strFileName, True,
bDirOnly) End If
End If
Loop Until Not bContinue
Call FindClose(dwID)
End Function

Public Sub FileFound(strFileName As String)
Debug.Print strFileName
End Sub


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

salut,
si j'ai bien lu il parle de macro alors si tu peut accéder aux API
en VBA dit moi comment,
de plus cet espece de snobisme qui consiste à ré-inventer la roue me
fait plutot rire,

FSO c'est len(quoi que sur des job simple cela suffit largement)
mais sa marche et les API windows ne sont pas forcément à la porté
de tous les developpeurs(faudrai peut etre pas l'oublier).
j'ai API guide et tout le toutim et des fois il m'arrive d'utilisé
le FSO et j'en suis pas mort(pas encore).

quand à ta réponse je doit dire quel à le merite d'etre super
claire: Ah non surtout pas de FSO en vb !!! On peut faire mieux
(APIs pour la recursivité car Dir$() ne marche pas dans ce cas).

me voila équiper pour l'hiver, merci.

cdlt
Boss Hog

"ng" wrote in message
news:
Salut,

Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour
la recursivité car Dir$() ne marche pas dans ce cas).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Salut,

tu parle de macro excel ou word ??
si tu à accès au fso FileSystemObject
il te suffit d'utiliser une For Each

@+
Boss Hog
"Elicend_News" <inconicoAfreePOINTfr> wrote in message
news:4173c47a$0$29526$
Bonjour,

savez vous s'il est possible de lister le contenu d'un répertoire
(ex, un CD, avec les sous répertoires) avec une macro ?

merci d'avance!

@ plus
Elicend
________________________

Attention adresse e-mail :
inconicoAfreePOINTfr
A = @
POINT = .
________________________












Avatar
Boss Hog
Salut
j'ai vue car je l'ai tester et j'avoue sa pulse pas mal, il suffirait d'y
ajouter des methode type FileExist ou FolderExist et cela deviendrai (dans
une DLL ActiveX) parfaitement interressant pour des page ASP aussi.

@+
Boss Hog


"ng" wrote in message
news:u$
Salut,

Non le FSO n'est pas simplement un interface, de plus il en existe
diffèrentes versions ce qui provoque des erreurs si utilisé en early
binding.

> pratique tel ShortPath, ShortName
Ce n'est pas très compliqué à coder il suffit de se faire un module une
bonne fois pour toute pis c'est bon...


Ma fonction déclanche simplemement une procédure (FileFound()) à chaque
fichier trouvé, il suffit d'en faire ce qu'on en veut.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

> Super,
> fallait répondre ceci au mec qui posait la question, par contre si
> c'est un débutant,
> bonjour la simplicité, de plus crois tu vraiment que le FSO n'est pas
> une interface entre le developpeur et l'API windows ?!
> tes fonctions(j'ai pas tout lu) fournissent elles des propriétés bien
> pratique tel ShortPath, ShortName
>
> comment boucle ont dessus ?
> ajoute un peut d'aide au cas ou le destinataire soit plus ou moin
> debutant.
>
> parce qu'à premiere vue et meme si il s'avère que c'est de la balle,
> c'est pas clair
>
> @+
> Boss Hog
>
>
>
>
> "ng" wrote in message
> news:
>> Salut,
>>
>> Les APIs fonctionnent très bien sous VBA, voici un module de ma
>> création utilisable tel quel :
>>
>> Private Declare Function FindFirstFile Lib "kernel32" Alias
>> "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As
>> WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib
>> "kernel32" (ByVal hFindFile As Long) As Long
>> Private Declare Function FindNextFile Lib "kernel32" Alias
>> "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As
>> WIN32_FIND_DATA) As Long
>>
>> Const MAX_PATH = 260
>> Const MAXDWORD = &HFFFF
>> Const INVALID_HANDLE_VALUE = -1
>> Const FILE_ATTRIBUTE_ARCHIVE = &H20
>> Const FILE_ATTRIBUTE_DIRECTORY = &H10
>> Const FILE_ATTRIBUTE_HIDDEN = &H2
>> Const FILE_ATTRIBUTE_NORMAL = &H80
>> Const FILE_ATTRIBUTE_READONLY = &H1
>> Const FILE_ATTRIBUTE_SYSTEM = &H4
>> Const FILE_ATTRIBUTE_TEMPORARY = &H100
>>
>> Private Type FILETIME
>> dwLowDateTime As Long
>> dwHighDateTime As Long
>> End Type
>>
>> Private Type WIN32_FIND_DATA
>> dwFileAttributes As Long
>> ftCreationTime As FILETIME
>> ftLastAccessTime As FILETIME
>> ftLastWriteTime As FILETIME
>> nFileSizeHigh As Long
>> nFileSizeLow As Long
>> dwReserved0 As Long
>> dwReserved1 As Long
>> cFileName As String * MAX_PATH
>> cAlternate As String * 14
>> End Type
>>
>> Private Function StripNulls(OriginalStr As String) As String
>> If (InStr(OriginalStr, vbNullChar) > 0) Then _
>> OriginalStr = Left$(OriginalStr, InStr(OriginalStr,
>> vbNullChar) - 1) StripNulls = OriginalStr
>> End Function
>>
>> Public Function ListFolder(ByVal strFolderPath As String, Optional
>> bRecursive As Boolean = False, Optional bDirOnly As Boolean = False)
>> As Boolean
>> Dim dwID As Long, lpFindDATA As WIN32_FIND_DATA
>> Dim bContinue As Boolean
>> Dim strFileName As String
>> If Right$(strFolderPath, 1) <> "" Then _
>> strFolderPath = strFolderPath & ""
>> Do
>> If dwID = 0 Then
>> dwID = FindFirstFile(strFolderPath & "*", lpFindDATA)
>> bContinue = True
>> Else
>> bContinue = FindNextFile(dwID, lpFindDATA)
>> End If
>> strFileName = StripNulls(lpFindDATA.cFileName)
>> If strFileName <> "." And strFileName <> ".." And bContinue
>> Then If bDirOnly Then
>> If (lpFindDATA.dwFileAttributes And
>> FILE_ATTRIBUTE_DIRECTORY) Then _
>> Call FileFound(strFolderPath & strFileName)
>> Else
>> Call FileFound(strFolderPath & strFileName)
>> End If
>> If bRecursive And (lpFindDATA.dwFileAttributes And
>> FILE_ATTRIBUTE_DIRECTORY) Then
>> Call ListFolder(strFolderPath & strFileName, True,
>> bDirOnly) End If
>> End If
>> Loop Until Not bContinue
>> Call FindClose(dwID)
>> End Function
>>
>> Public Sub FileFound(strFileName As String)
>> Debug.Print strFileName
>> End Sub
>>
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>>> salut,
>>> si j'ai bien lu il parle de macro alors si tu peut accéder aux API
>>> en VBA dit moi comment,
>>> de plus cet espece de snobisme qui consiste à ré-inventer la roue me
>>> fait plutot rire,
>>>
>>> FSO c'est len(quoi que sur des job simple cela suffit largement)
>>> mais sa marche et les API windows ne sont pas forcément à la porté
>>> de tous les developpeurs(faudrai peut etre pas l'oublier).
>>> j'ai API guide et tout le toutim et des fois il m'arrive d'utilisé
>>> le FSO et j'en suis pas mort(pas encore).
>>>
>>> quand à ta réponse je doit dire quel à le merite d'etre super
>>> claire: Ah non surtout pas de FSO en vb !!! On peut faire mieux
>>> (APIs pour la recursivité car Dir$() ne marche pas dans ce cas).
>>>
>>> me voila équiper pour l'hiver, merci.
>>>
>>> cdlt
>>> Boss Hog
>>>
>>> "ng" wrote in message
>>> news:
>>>> Salut,
>>>>
>>>> Ah non surtout pas de FSO en vb !!! On peut faire mieux (APIs pour
>>>> la recursivité car Dir$() ne marche pas dans ce cas).
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>>> Salut,
>>>>>
>>>>> tu parle de macro excel ou word ??
>>>>> si tu à accès au fso FileSystemObject
>>>>> il te suffit d'utiliser une For Each
>>>>>
>>>>> @+
>>>>> Boss Hog
>>>>> "Elicend_News" <inconicoAfreePOINTfr> wrote in message
>>>>> news:4173c47a$0$29526$
>>>>>> Bonjour,
>>>>>>
>>>>>> savez vous s'il est possible de lister le contenu d'un répertoire
>>>>>> (ex, un CD, avec les sous répertoires) avec une macro ?
>>>>>>
>>>>>> merci d'avance!
>>>>>>
>>>>>> @ plus
>>>>>> Elicend
>>>>>> ________________________
>>>>>>
>>>>>> Attention adresse e-mail :
>>>>>> inconicoAfreePOINTfr
>>>>>> A = @
>>>>>> POINT = .
>>>>>> ________________________




Avatar
Elicend_News
Salut,
Merci à vous deux pour vos réponses!
alors franchement, je suis pas débutant, mais presque, et sans le code
complet, j'avoue que je n'aurai pas ete capable de le faire de la meme facon
seul !

par contre, je l'ai modifié, car en le lancant, je voyais bien qu'il
travaillait, mais ne m'affichait rien! j'ai mis :
Public Sub FileFound(strFileName As String)
Debug.Print strFileName

var01 = var01 + 1 ' nouveau !
Cells(var01, 1).Value = strFileName ' nouveau

End Sub

et pour appeler :
Sub test()
'Call ListFolder("c: mon chemin", True (recursivité), True(lister seulement
les dossiers))
Call ListFolder("D:04-Divers Perso10-Excelessais excel", True, True)

End Sub

mais je remarque qu'exel ne liste que les répertoires : est ce possible de
lister aussi les fichiers ?

merci beaucoup en tous cas !

elicend.
1 2