-- 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:
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 ?
--
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:
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 ?
-- 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:
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.
Elicend_News
gloups !
j'ai ete gros débutant sur ce coup la !
merci, ca marche nikel et ca répond parfaitement à mon besoin !
-- 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: > 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.
gloups !
j'ai ete gros débutant sur ce coup la !
merci, ca marche nikel et ca répond parfaitement à mon besoin !
elicend
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:uEa8mWStEHA.220@TK2MSFTNGP15.phx.gbl...
--
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:
> 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.
-- 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: > 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.
ng
ReBonjour,
Juste une petite correction dans la déclaration de ListFolder(), mettre : Public Sub ListFolder(ByVal strFolderPath As String, Optional bRecursive As Boolean = False, Optional bDirOnly As Boolean = False)
Ce n'est pas une fonction.
-- 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,
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
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 = . ________________________
ReBonjour,
Juste une petite correction dans la déclaration de ListFolder(), mettre :
Public Sub ListFolder(ByVal strFolderPath As String, Optional bRecursive As
Boolean = False, Optional bDirOnly As Boolean = False)
Ce n'est pas une fonction.
--
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,
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
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 = .
________________________
Juste une petite correction dans la déclaration de ListFolder(), mettre : Public Sub ListFolder(ByVal strFolderPath As String, Optional bRecursive As Boolean = False, Optional bDirOnly As Boolean = False)
Ce n'est pas une fonction.
-- 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,
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
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 = . ________________________