Bon, j'ai déjà posté une réponse hier directement sur le site et celle-ci
n'apparaît toujours pas !!?
Donc, je réitère en espérant que cette fois le système voudra bien
enregistrer...
Je voulais donc remerçier Gilbert car finalement j'ai bidouillé quelque
chose qui semble bien fonctionner... voilà ce que cela donne (vos critiques
sont les bienvenues sur la forme) :
Sub test()
Call ListerSousRepertoires(LeNomDeTonDossier)
End Sub
Sub ListerSousRepertoires(spath As String)
Dim fso As Object
Dim Directory As Object
Dim SubFolders As Object
Dim Folders As Object
Dim sTmp As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set Directory = fso.GetFolder(spath)
Set SubFolders = Directory.SubFolders
For Each Folders In SubFolders
Debug.Print strtmp & Folders.name
Call ListerSousRepertoires(Folders.Path)
Call ListerFichiers(Folders.Path)
Next Folders
Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing
End Sub
Sub ListerFichiers(spath As String)
Dim fso As Object
Dim Repertoire As Object
Dim SubFolder As Object
Dim File, Files As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set Repertoire = fso.GetFolder(spath)
Set Files = Repertoire.Files
For Each File In Files
Debug.Print strtmp & File.name
Next File
Set Files = Nothing
Set File = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Repertoire = Nothing
End Sub
Quand j'exécute cela, j'ai bien tous mes répertoires/sous-répertoires et
fichiers dans la fenêtre d'exécution : seulement voilà, maintenant je ne
sais comment récupérer le contenu de cette fenêtre pour l'intégrer dans le
champ de mon formulaire ? Ou bien une autre méthode pour récupérer
l'information ainsi rassemblée ?
Un truc que je ne pige pas (entre autre) c'est ce "strtmp", déclaré nul part
et qui pourtant passe sans problème ?
Bref merci de m'aider encore un peu : je bloque !
Cordialement,
Sonia.
Bon, j'ai déjà posté une réponse hier directement sur le site et celle-ci
n'apparaît toujours pas !!?
Donc, je réitère en espérant que cette fois le système voudra bien
enregistrer...
Je voulais donc remerçier Gilbert car finalement j'ai bidouillé quelque
chose qui semble bien fonctionner... voilà ce que cela donne (vos critiques
sont les bienvenues sur la forme) :
Sub test()
Call ListerSousRepertoires(LeNomDeTonDossier)
End Sub
Sub ListerSousRepertoires(spath As String)
Dim fso As Object
Dim Directory As Object
Dim SubFolders As Object
Dim Folders As Object
Dim sTmp As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set Directory = fso.GetFolder(spath)
Set SubFolders = Directory.SubFolders
For Each Folders In SubFolders
Debug.Print strtmp & Folders.name
Call ListerSousRepertoires(Folders.Path)
Call ListerFichiers(Folders.Path)
Next Folders
Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing
End Sub
Sub ListerFichiers(spath As String)
Dim fso As Object
Dim Repertoire As Object
Dim SubFolder As Object
Dim File, Files As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set Repertoire = fso.GetFolder(spath)
Set Files = Repertoire.Files
For Each File In Files
Debug.Print strtmp & File.name
Next File
Set Files = Nothing
Set File = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Repertoire = Nothing
End Sub
Quand j'exécute cela, j'ai bien tous mes répertoires/sous-répertoires et
fichiers dans la fenêtre d'exécution : seulement voilà, maintenant je ne
sais comment récupérer le contenu de cette fenêtre pour l'intégrer dans le
champ de mon formulaire ? Ou bien une autre méthode pour récupérer
l'information ainsi rassemblée ?
Un truc que je ne pige pas (entre autre) c'est ce "strtmp", déclaré nul part
et qui pourtant passe sans problème ?
Bref merci de m'aider encore un peu : je bloque !
Cordialement,
Sonia.
Bon, j'ai déjà posté une réponse hier directement sur le site et celle-ci
n'apparaît toujours pas !!?
Donc, je réitère en espérant que cette fois le système voudra bien
enregistrer...
Je voulais donc remerçier Gilbert car finalement j'ai bidouillé quelque
chose qui semble bien fonctionner... voilà ce que cela donne (vos critiques
sont les bienvenues sur la forme) :
Sub test()
Call ListerSousRepertoires(LeNomDeTonDossier)
End Sub
Sub ListerSousRepertoires(spath As String)
Dim fso As Object
Dim Directory As Object
Dim SubFolders As Object
Dim Folders As Object
Dim sTmp As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set Directory = fso.GetFolder(spath)
Set SubFolders = Directory.SubFolders
For Each Folders In SubFolders
Debug.Print strtmp & Folders.name
Call ListerSousRepertoires(Folders.Path)
Call ListerFichiers(Folders.Path)
Next Folders
Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing
End Sub
Sub ListerFichiers(spath As String)
Dim fso As Object
Dim Repertoire As Object
Dim SubFolder As Object
Dim File, Files As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set Repertoire = fso.GetFolder(spath)
Set Files = Repertoire.Files
For Each File In Files
Debug.Print strtmp & File.name
Next File
Set Files = Nothing
Set File = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Repertoire = Nothing
End Sub
Quand j'exécute cela, j'ai bien tous mes répertoires/sous-répertoires et
fichiers dans la fenêtre d'exécution : seulement voilà, maintenant je ne
sais comment récupérer le contenu de cette fenêtre pour l'intégrer dans le
champ de mon formulaire ? Ou bien une autre méthode pour récupérer
l'information ainsi rassemblée ?
Un truc que je ne pige pas (entre autre) c'est ce "strtmp", déclaré nul part
et qui pourtant passe sans problème ?
Bref merci de m'aider encore un peu : je bloque !
Cordialement,
Sonia.
Merci pour ces éclaircissements...
De mon côté j'avance, mais pas encore obtenu tout à fait ce que je
souhaitais (je ne sais pas si c'est possible...?)
Voilà ce que finalement j'ai écris pour récupérer les données dans mon champ
:
Sub test()
Call ListerSousRepertoires(LeNomDeTonDossier)
End Sub
Sub ListerSousRepertoires(spath As String)
Dim fso As Object
Dim Directory As Object
Dim SubFolders As Object
Dim Folders As Object
Dim strtmp
Set fso = CreateObject("Scripting.FileSystemObject")
Set Directory = fso.GetFolder(spath)
Set SubFolders = Directory.SubFolders
For Each Folders In SubFolders
Debug.Print strtmp & Folders.name
strtmp = strtmp & Folders.name & ";"
Call ListerSousRepertoires(Folders.Path)
Call ListerFichiers(Folders.Path)
Next Folders
Me![Description] = Me![Description] & vbCrLf & strtmp
Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing
End Sub
Sub ListerFichiers(spath As String)
Dim fso As Object
Dim Repertoire As Object
Dim SubFolder As Object
Dim File, Files As Object
Dim strtmp
Dim recupfichiers As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set Repertoire = fso.GetFolder(spath)
Set Files = Repertoire.Files
For Each File In Files
Debug.Print strtmp & File.name
strtmp = strtmp & File.name & ";"
Next File
Me![Description] = Me![Description] & vbCrLf & strtmp
Set Files = Nothing
Set File = Nothing
Set SubFolder = Nothing
Set fso = Nothing
Set Repertoire = Nothing
End Sub
.... cela fonctionne : le seul problème est l'ordre dans lequel je récupère
les noms des répertoires et fichiers : voilà ce qu'il me donne :
Sous-sous-REP1;
ImageSous-REP1.bmp;
Sous-REP1;
Document-REP1.doc;ImageREP1.bmp;
SousREP2;
DocREP2.doc;
REPERTOIRE1;REPERTOIRE2;
Là ou j'aimerais bien avoir quelque chose qui redonne un peu l'organisation
des choses, du genre :
REPERTOIRE1
- Document-REP1.doc;
- ImageREP1.bmp;
- Sous-REP1;
-- ImageSous-REP1.bmp;
-- Sous-sous-REP1;
REPERTOIRE2
- DocREP2.doc;
- SousREP2;
Des idées pour obtenir un tel résultat ?
Par avance, ma reconnaissance :o)
Sonia.
Merci pour ces éclaircissements...
De mon côté j'avance, mais pas encore obtenu tout à fait ce que je
souhaitais (je ne sais pas si c'est possible...?)
Voilà ce que finalement j'ai écris pour récupérer les données dans mon champ
:
Sub test()
Call ListerSousRepertoires(LeNomDeTonDossier)
End Sub
Sub ListerSousRepertoires(spath As String)
Dim fso As Object
Dim Directory As Object
Dim SubFolders As Object
Dim Folders As Object
Dim strtmp
Set fso = CreateObject("Scripting.FileSystemObject")
Set Directory = fso.GetFolder(spath)
Set SubFolders = Directory.SubFolders
For Each Folders In SubFolders
Debug.Print strtmp & Folders.name
strtmp = strtmp & Folders.name & ";"
Call ListerSousRepertoires(Folders.Path)
Call ListerFichiers(Folders.Path)
Next Folders
Me![Description] = Me![Description] & vbCrLf & strtmp
Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing
End Sub
Sub ListerFichiers(spath As String)
Dim fso As Object
Dim Repertoire As Object
Dim SubFolder As Object
Dim File, Files As Object
Dim strtmp
Dim recupfichiers As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set Repertoire = fso.GetFolder(spath)
Set Files = Repertoire.Files
For Each File In Files
Debug.Print strtmp & File.name
strtmp = strtmp & File.name & ";"
Next File
Me![Description] = Me![Description] & vbCrLf & strtmp
Set Files = Nothing
Set File = Nothing
Set SubFolder = Nothing
Set fso = Nothing
Set Repertoire = Nothing
End Sub
.... cela fonctionne : le seul problème est l'ordre dans lequel je récupère
les noms des répertoires et fichiers : voilà ce qu'il me donne :
Sous-sous-REP1;
ImageSous-REP1.bmp;
Sous-REP1;
Document-REP1.doc;ImageREP1.bmp;
SousREP2;
DocREP2.doc;
REPERTOIRE1;REPERTOIRE2;
Là ou j'aimerais bien avoir quelque chose qui redonne un peu l'organisation
des choses, du genre :
REPERTOIRE1
- Document-REP1.doc;
- ImageREP1.bmp;
- Sous-REP1;
-- ImageSous-REP1.bmp;
-- Sous-sous-REP1;
REPERTOIRE2
- DocREP2.doc;
- SousREP2;
Des idées pour obtenir un tel résultat ?
Par avance, ma reconnaissance :o)
Sonia.
Merci pour ces éclaircissements...
De mon côté j'avance, mais pas encore obtenu tout à fait ce que je
souhaitais (je ne sais pas si c'est possible...?)
Voilà ce que finalement j'ai écris pour récupérer les données dans mon champ
:
Sub test()
Call ListerSousRepertoires(LeNomDeTonDossier)
End Sub
Sub ListerSousRepertoires(spath As String)
Dim fso As Object
Dim Directory As Object
Dim SubFolders As Object
Dim Folders As Object
Dim strtmp
Set fso = CreateObject("Scripting.FileSystemObject")
Set Directory = fso.GetFolder(spath)
Set SubFolders = Directory.SubFolders
For Each Folders In SubFolders
Debug.Print strtmp & Folders.name
strtmp = strtmp & Folders.name & ";"
Call ListerSousRepertoires(Folders.Path)
Call ListerFichiers(Folders.Path)
Next Folders
Me![Description] = Me![Description] & vbCrLf & strtmp
Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing
End Sub
Sub ListerFichiers(spath As String)
Dim fso As Object
Dim Repertoire As Object
Dim SubFolder As Object
Dim File, Files As Object
Dim strtmp
Dim recupfichiers As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set Repertoire = fso.GetFolder(spath)
Set Files = Repertoire.Files
For Each File In Files
Debug.Print strtmp & File.name
strtmp = strtmp & File.name & ";"
Next File
Me![Description] = Me![Description] & vbCrLf & strtmp
Set Files = Nothing
Set File = Nothing
Set SubFolder = Nothing
Set fso = Nothing
Set Repertoire = Nothing
End Sub
.... cela fonctionne : le seul problème est l'ordre dans lequel je récupère
les noms des répertoires et fichiers : voilà ce qu'il me donne :
Sous-sous-REP1;
ImageSous-REP1.bmp;
Sous-REP1;
Document-REP1.doc;ImageREP1.bmp;
SousREP2;
DocREP2.doc;
REPERTOIRE1;REPERTOIRE2;
Là ou j'aimerais bien avoir quelque chose qui redonne un peu l'organisation
des choses, du genre :
REPERTOIRE1
- Document-REP1.doc;
- ImageREP1.bmp;
- Sous-REP1;
-- ImageSous-REP1.bmp;
-- Sous-sous-REP1;
REPERTOIRE2
- DocREP2.doc;
- SousREP2;
Des idées pour obtenir un tel résultat ?
Par avance, ma reconnaissance :o)
Sonia.
Bon analysont un peu la méthode employée :
En premier tu appelle la procédure "ListerSousRepertoires" avec en
paramêtre
le nom du répertoire origine puis tu effectue un traitement récursif
(liste)
sur les éventuels sous-répertoires et lorsqu'il n'y a plus de
sous-répertoire tu liste les fichiers.
et toi tu voudrais lister d'abord les fichiers du répertoire à analyser
puis
traiter de manière récursive les éventuels sous-répertoire, donc il va
falloir
placer la procédure qui liste les fichiers avant la boucle qui traite les
sous-répertoires.
Bon analysont un peu la méthode employée :
En premier tu appelle la procédure "ListerSousRepertoires" avec en
paramêtre
le nom du répertoire origine puis tu effectue un traitement récursif
(liste)
sur les éventuels sous-répertoires et lorsqu'il n'y a plus de
sous-répertoire tu liste les fichiers.
et toi tu voudrais lister d'abord les fichiers du répertoire à analyser
puis
traiter de manière récursive les éventuels sous-répertoire, donc il va
falloir
placer la procédure qui liste les fichiers avant la boucle qui traite les
sous-répertoires.
Bon analysont un peu la méthode employée :
En premier tu appelle la procédure "ListerSousRepertoires" avec en
paramêtre
le nom du répertoire origine puis tu effectue un traitement récursif
(liste)
sur les éventuels sous-répertoires et lorsqu'il n'y a plus de
sous-répertoire tu liste les fichiers.
et toi tu voudrais lister d'abord les fichiers du répertoire à analyser
puis
traiter de manière récursive les éventuels sous-répertoire, donc il va
falloir
placer la procédure qui liste les fichiers avant la boucle qui traite les
sous-répertoires.
Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même, mais
bon)
Cordialement,
Sonia.
Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même, mais
bon)
Cordialement,
Sonia.
Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même, mais
bon)
Cordialement,
Sonia.
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
re,Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même,
mais bon)
Cordialement,
Sonia.
Essaye avec le code suivant :
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "C:TonChemin"
sTmp = ""
Lister sChemin
Debug.Print sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath<>sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
re,
Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même,
mais bon)
Cordialement,
Sonia.
Essaye avec le code suivant :
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "C:TonChemin"
sTmp = ""
Lister sChemin
Debug.Print sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath<>sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
re,Bonsoir,
Merci beaucoup pour ton intérêt, mais pas encore tout à fait ça : pas
l'ordre souhaité en tous les cas... car voilà ce que cela donne :
Sous-sous-REP1;
Sous-REP1;
imageSous-REP1.bmp;
REPERTOIRE1;
DocREP1.doc;ImageREP1.bmp;
SousREP2;
base-sousREP2.mdb;
REPERTOIRE2;
docREP2.doc;
REPERTOIRE3;
ImageREP3.bmp;
RIBPI_C_1979_01;
.... je vais voir si je peux faire mieux (ça m'étonnerait quand même,
mais bon)
Cordialement,
Sonia.
Essaye avec le code suivant :
Dim oFso As Object
Dim sTmp As String
Dim sChemin As String
Sub Test()
Set oFso = CreateObject("Scripting.FileSystemObject")
sChemin = "C:TonChemin"
sTmp = ""
Lister sChemin
Debug.Print sTmp
Set oFso = Nothing
End Sub
Sub Lister(sPath)
Dim oDc As Object
Dim oD As Object
Dim oF As Object
If oFso.FolderExists(sPath) Then
Set oDc = oFso.GetFolder(sPath)
If sPath<>sChemin Then
sTmp = sTmp & Mid(sPath, InStrRev(sPath, "") + 1) & ";" & vbCrLf
For Each oF In oDc.Files
sTmp = sTmp & oF.Name & ";"
Next
sTmp = sTmp & vbCrLf
Set oF = Nothing
End If
For Each oD In oDc.SubFolders
Lister sPath & "" & oD.Name
Next
End If
Set oDc = Nothing
Set oD = Nothing
End Sub