OVH Cloud OVH Cloud

Répertoires avec ScriptingFileSystemObject

17 réponses
Avatar
Guy FALESSE
Bonjour à tous,

J'ai trouvé cette fonction sur le site de Arnaud (Anor)
C'est très bien, mais comment faire pour trouver les sous-répertoires des
sous-répertoires, lorsqu'il y a plusieurs niveaux et pour touver les
fichiers appartenant à ces niveaux.
J'avais vu aussi une fonction semblable chez Hervé Inissan, mais même
problème.
Sachant que Arnaud a un WE chargé, je fais appel aux autres érudits de ce
forum.
D'avance merci
Guy FALESSE

Function fnGetSubFoldersInDirectory(sPath As String) 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
sTmp = sTmp & Folders.Name & ";"
Debug.Print Folders.path
Next Folders

If sTmp <> "" Then
sTmp = Left(sTmp, Len(sTmp) - 1) & ""
End If

fnGetSubFoldersInDirectory = sTmp

Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing

End Function

7 réponses

1 2
Avatar
Eric
Guy,
regardes mon dernier post, celui de 13h17, ca marche très bien.
Voila ce que j'obtiens en tapant : ? fnGetSubFoldersInDirectory("c:")

...
Répertoire : C:Documents and SettingsFramMes documentsTestFraction
ClasseFraction.cls
ProjetFraction.dll
ProjetFraction.exp
ProjetFraction.lib
ProjetFraction.vbp
ProjetFraction.vbw
Répertoire : C:Documents and SettingsFramMes documentsTestFraction
Nouveau dossier
Form1.frm
Projet1.vbp
Projet1.vbw
...


ca devrait être de même chez toi
Gardes les fonctions et procédures séparées.
A+
Eric
Avatar
Guy FALESSE
Salut Eric,

Un grand merci, ça marche au poil, il me reste à mettre ça dans une table.
Sait-on facilement ajouter la date des fichiers?
Je voudrais mettre les répertoires dans un champ, les fichiers dans un autre
champ et enfin la date dans encore un autre.
Je vais regarder à cela tantôt ou demain.
En tout cas, un bon boulot.
@+
Guy FALESSE


"Eric" a écrit dans le message de
news:
Guy,
regardes mon dernier post, celui de 13h17, ca marche très bien.
Voila ce que j'obtiens en tapant : ? fnGetSubFoldersInDirectory("c:")

...
Répertoire : C:Documents and SettingsFramMes documentsTestFraction
ClasseFraction.cls
ProjetFraction.dll
ProjetFraction.exp
ProjetFraction.lib
ProjetFraction.vbp
ProjetFraction.vbw
Répertoire : C:Documents and SettingsFramMes documentsTestFraction
Nouveau dossier
Form1.frm
Projet1.vbp
Projet1.vbw
...


ca devrait être de même chez toi
Gardes les fonctions et procédures séparées.
A+
Eric


Avatar
Guy FALESSE
re salut,

Hé bien , je n'y suis pas arrivé, trop complexe pour mes petites
connaissances, on essauera encore une prochaine, là, où j'airai peut-être
amélioré mon savoir.
En tout cas, merci à ceux (Eric et LJ) qui m'ont répondu, j'ai de toute
façon, beaucoup appris.
@+
Guy FALESSE

"Guy FALESSE" a écrit dans le message de
news:
Salut LJ,

Merci pour ta réponse.
Ça marche bien, apparemment et comment ferai-je dès lors pour que les
fichiers contenus dans les différents directories s'affichent.
Si ce n'est pas abuser bien sûr :-)
@+

Guy FALESSE

"www.eztree-msdn.com (Laurent Jordi) Enlever le s à infos pour me
contacter

par mail" a écrit dans le message de
news:
Salut...

Il suffit de rappeler la fonction de façon récursive

Function RecurseSubders(sPath)
Dim fso As Object
Dim SubFolders as Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set SubFolders = fso.GetFolder(sPath).SubFolders

debug.print sPath
For Each Folders In SubFolders
RecurseSubders(Folders.path)
Next
end function

Je ne l'ai pas déboguée, il se peut qu'il y ait des erreurs de
syntaxe...



@+

LJ

End Function
"Guy FALESSE" a écrit dans le message de


news:
Bonjour,
Je demande des conseils à ce sujet, parce que cela me paraît plus
rapide



avec ce système qu'avec la fonction dir().
Je pense aussi qu'on sait connaître la date des fichiers, chose que je
ne


sais pas si c'est possible avec dir().

Guy FALESSE


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

J'ai trouvé cette fonction sur le site de Arnaud (Anor)
C'est très bien, mais comment faire pour trouver les
sous-répertoires




des
sous-répertoires, lorsqu'il y a plusieurs niveaux et pour touver les
fichiers appartenant à ces niveaux.
J'avais vu aussi une fonction semblable chez Hervé Inissan, mais
même




problème.
Sachant que Arnaud a un WE chargé, je fais appel aux autres érudits
de




ce
forum.
D'avance merci
Guy FALESSE

Function fnGetSubFoldersInDirectory(sPath As String) 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
sTmp = sTmp & Folders.Name & ";"
Debug.Print Folders.path
Next Folders

If sTmp <> "" Then
sTmp = Left(sTmp, Len(sTmp) - 1) & ""
End If

fnGetSubFoldersInDirectory = sTmp

Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing

End Function
















Avatar
Eric
re Guy,

pour la date des fichiers :
File.DateCreated et File.DateLastModified. (Sur l'objet File, dans l'aide
tu as ses propriétés)

Par contre pour mettre ca dans une table ca va etre un peu plus complexe
puisque tu peux avoir des rep contenant que des reps qui contiennent des
rep, contenant à leur tour des files, et des files .... ou tout autre
combinaison.

Que veux tu faire exactement ? Stocker les infos de tes hds dans une table?

Eric
Avatar
VsBarabas
Bonjour
l'ensemble de ce que l'on peut faire avec FSO se trouve dans l'aide dans le
repertoire de Office 10 / 1036 / VBScrip5 (help)
Regarde dans
didacticiel de l'objet FSO, puis
example de c ode FSO
le code fourni fonctionne mais peut être adapté en fonction de tes besoins
Bon code
Barabas
"Guy FALESSE" a écrit dans le message de
news:
re salut,

Hé bien , je n'y suis pas arrivé, trop complexe pour mes petites
connaissances, on essauera encore une prochaine, là, où j'airai peut-être
amélioré mon savoir.
En tout cas, merci à ceux (Eric et LJ) qui m'ont répondu, j'ai de toute
façon, beaucoup appris.
@+
Guy FALESSE

"Guy FALESSE" a écrit dans le message de
news:
Salut LJ,

Merci pour ta réponse.
Ça marche bien, apparemment et comment ferai-je dès lors pour que les
fichiers contenus dans les différents directories s'affichent.
Si ce n'est pas abuser bien sûr :-)
@+

Guy FALESSE

"www.eztree-msdn.com (Laurent Jordi) Enlever le s à infos pour me
contacter

par mail" a écrit dans le message de
news:
Salut...

Il suffit de rappeler la fonction de façon récursive

Function RecurseSubders(sPath)
Dim fso As Object
Dim SubFolders as Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set SubFolders = fso.GetFolder(sPath).SubFolders

debug.print sPath
For Each Folders In SubFolders
RecurseSubders(Folders.path)
Next
end function

Je ne l'ai pas déboguée, il se peut qu'il y ait des erreurs de
syntaxe...



@+

LJ

End Function
"Guy FALESSE" a écrit dans le message de


news:
Bonjour,
Je demande des conseils à ce sujet, parce que cela me paraît plus
rapide



avec ce système qu'avec la fonction dir().
Je pense aussi qu'on sait connaître la date des fichiers, chose que
je




ne
sais pas si c'est possible avec dir().

Guy FALESSE


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

J'ai trouvé cette fonction sur le site de Arnaud (Anor)
C'est très bien, mais comment faire pour trouver les
sous-répertoires




des
sous-répertoires, lorsqu'il y a plusieurs niveaux et pour touver
les





fichiers appartenant à ces niveaux.
J'avais vu aussi une fonction semblable chez Hervé Inissan, mais
même




problème.
Sachant que Arnaud a un WE chargé, je fais appel aux autres
érudits





de
ce
forum.
D'avance merci
Guy FALESSE

Function fnGetSubFoldersInDirectory(sPath As String) 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
sTmp = sTmp & Folders.Name & ";"
Debug.Print Folders.path
Next Folders

If sTmp <> "" Then
sTmp = Left(sTmp, Len(sTmp) - 1) & ""
End If

fnGetSubFoldersInDirectory = sTmp

Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing

End Function




















Avatar
Guy FALESSE
Salut Eric,

En fait, ce programme m'aurait servi à cataloguer mes CD, j'en ai pour
l'instant 136, ces CD contiennent des données et des programmes de toutes
sortes, il y a des anciennes données, des MP3 et des anciens programmes et
qui sont parfois nécessaires lorsqu'on travaille sur de vieilles machines.
C'est pour cela qu'il y en a autant :)
Donc, il y aurait une table avec un champ qui contiendrait le n° index du
CD, le nom du CD, le nom du répertoire, un champ qui contiendrait les
fichiers et enfin un champ qui contiendrait la date de création.
Donc, bien sûr, le n° du CD, le nom du CD sera répété autant de fois qu'il y
a de répertoires et de fichiers et les répertoires seraient copiés autant de
fois qu'il y a de fichiers dans ce répertoire, mais ça, c'est automatique,
enfin, si on le dit.
Lorsque les champs seront remplis, là, j'ai un programme de tri, de
recherche etc. Voilà le but du jeu.
Toutes les bonnes idées seront donc les bienvenues, mais je ne veux en aucun
cas, forcer la main. Le problème est que je suis à peu près nul en
programmation, je sais faire des trucs simples, mais lorsque'il faut
commencer à imbriquer des fonctions, là, je suis "paumé".
Voilà, encore merci de t'intéresser à mon cas et bonne soirée.
@+

Guy FALESSE


"Eric" a écrit dans le message de
news:
re Guy,

pour la date des fichiers :
File.DateCreated et File.DateLastModified. (Sur l'objet File, dans l'aide
tu as ses propriétés)

Par contre pour mettre ca dans une table ca va etre un peu plus complexe
puisque tu peux avoir des rep contenant que des reps qui contiennent des
rep, contenant à leur tour des files, et des files .... ou tout autre
combinaison.

Que veux tu faire exactement ? Stocker les infos de tes hds dans une
table?


Eric




Avatar
Guy FALESSE
Salut Barabas,

Merci de ta réponse, mais je n'ai pas Office10, mais Office11 et je n'ai pas
VBscript, il faut le faire!
C'est bête, il faudrait peut-être que je réinstalle Office2003 et voir s'il
ne manque quelque chose dans les aides.
Je dirais même plus, c'es con, parce qu'on parle de quelque chose et je suis
dnas le noir le plus complet.

@+

Guy FALESSE


"VsBarabas" a écrit dans le message de
news:40a7a220$0$262$
Bonjour
l'ensemble de ce que l'on peut faire avec FSO se trouve dans l'aide dans
le

repertoire de Office 10 / 1036 / VBScrip5 (help)
Regarde dans
didacticiel de l'objet FSO, puis
example de c ode FSO
le code fourni fonctionne mais peut être adapté en fonction de tes besoins
Bon code
Barabas
"Guy FALESSE" a écrit dans le message de
news:
re salut,

Hé bien , je n'y suis pas arrivé, trop complexe pour mes petites
connaissances, on essauera encore une prochaine, là, où j'airai
peut-être


amélioré mon savoir.
En tout cas, merci à ceux (Eric et LJ) qui m'ont répondu, j'ai de toute
façon, beaucoup appris.
@+
Guy FALESSE

"Guy FALESSE" a écrit dans le message de
news:
Salut LJ,

Merci pour ta réponse.
Ça marche bien, apparemment et comment ferai-je dès lors pour que les
fichiers contenus dans les différents directories s'affichent.
Si ce n'est pas abuser bien sûr :-)
@+

Guy FALESSE

"www.eztree-msdn.com (Laurent Jordi) Enlever le s à infos pour me
contacter

par mail" a écrit dans le message de
news:
Salut...

Il suffit de rappeler la fonction de façon récursive

Function RecurseSubders(sPath)
Dim fso As Object
Dim SubFolders as Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set SubFolders = fso.GetFolder(sPath).SubFolders

debug.print sPath
For Each Folders In SubFolders
RecurseSubders(Folders.path)
Next
end function

Je ne l'ai pas déboguée, il se peut qu'il y ait des erreurs de
syntaxe...



@+

LJ

End Function
"Guy FALESSE" a écrit dans le message de


news:
Bonjour,
Je demande des conseils à ce sujet, parce que cela me paraît plus
rapide



avec ce système qu'avec la fonction dir().
Je pense aussi qu'on sait connaître la date des fichiers, chose
que





je
ne
sais pas si c'est possible avec dir().

Guy FALESSE


"Guy FALESSE" a écrit dans le message de
news:
Bonjour à tous,

J'ai trouvé cette fonction sur le site de Arnaud (Anor)
C'est très bien, mais comment faire pour trouver les
sous-répertoires




des
sous-répertoires, lorsqu'il y a plusieurs niveaux et pour touver
les





fichiers appartenant à ces niveaux.
J'avais vu aussi une fonction semblable chez Hervé Inissan, mais
même




problème.
Sachant que Arnaud a un WE chargé, je fais appel aux autres
érudits





de
ce
forum.
D'avance merci
Guy FALESSE

Function fnGetSubFoldersInDirectory(sPath As String) 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
sTmp = sTmp & Folders.Name & ";"
Debug.Print Folders.path
Next Folders

If sTmp <> "" Then
sTmp = Left(sTmp, Len(sTmp) - 1) & ""
End If

fnGetSubFoldersInDirectory = sTmp

Set Folders = Nothing
Set SubFolders = Nothing
Set fso = Nothing
Set Directory = Nothing

End Function
























1 2