Liste contenu répertoire

Résolu
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015 - 9 déc. 2008 à 13:12
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 9 déc. 2008 à 22:50
Bonjour le forum
Je me tourne vers vous afin pour une modif de script sous Vista. Je m' expliaque j' ai récupéré un script qui liste les fichiers des répertoires, mais il ne liste pasles sous réperoires. Mon but c' est que le script au lancement liste à partir d' un dossier donné me fasse la liste des sous répertoires sans faire la liste des fichiers. 
Malgré mes nombreuses recherche je n' ai pas trouvé de script approchant
Merci d' avance pour toute aide 
Option Explicit


 Const PathMDB = "F:\_DEV_vbs"


 MsgBox TriRepertoire,,"Enumération " & PathMDB
 '---lister les fichiers du répertoire ---
 Function TriRepertoire()
 Dim fso, fichier, fileItem
 Dim i, imax, z, valeur, cible, liste
 Set fso = CreateObject("Scripting.FileSystemObject")


 imax = 0
 'début de l'énumération
 For Each fichier In fso.GetFolder(PathMDB).Files
 Set fileItem = fso.GetFile(fichier)


 imax = imax + 1
 ReDim Preserve Tableau(2, imax)
 Tableau(1, imax) = Fichier.Name
 Tableau(2, imax) = FileItem.DateLastModified


 '---trier les fichiers par ordre décroissant de création ---
 Do
 Valeur = 0
 For i = 1 To imax - 1
 If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
 For z = 1 To 2
 Cible = Tableau(z, i)
 Tableau(z, i) = Tableau(z, i + 1)
 Tableau(z, i + 1) = Cible
 Next
 Valeur = 1
 End If
 Next
 Loop While Valeur = 1
 Set fileItem = nothing
 Next


 'Affichage du résultat classé
 For i = 1 To imax
 liste = liste &vbTab& i &vbTab& Tableau(1, i) &Space(2)&vbTab&vbTab& Tableau(2, i) &vbCr
 'MsgBox liste,,i & " / " & imax &Space(3)& "Liste du répertoire"&Space(3)& PathMDB
 If i = imax Then MsgBox liste ,,"Liste du répertoire" &Space(3)& PathMDB
 Next
 TriRepertoire = liste


 Set fso = nothing
 End Function
 

4 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 déc. 2008 à 14:23
 Bonjour barada,

Option explicit
Const Path = "F:\SCRIPTS"
Dim objFso, SubFolder
Set objFso = CreateObject("Scripting.FileSystemObject")
ShowListFolder objFso.GetFolder(Path)
Set objFso = nothing

Sub ShowListFolder(Folder)
     For Each Subfolder in Folder.SubFolders
         msgbox   SubFolder.Path & vbCrLf & SubFolder.Name
         ShowListFolder SubFolder
    Next
End Sub

Il te suffit de remplacer le msgbox par un tableau ou un dictionnaire.

jean-marc
3
cs_barada Messages postés 54 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 13 août 2015
9 déc. 2008 à 18:31
Bonsoir jean-marc et le forum

Merci pour le script, j' essayerai de faire le remplacement du msgbox par un tableau

Barada
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 déc. 2008 à 21:29
 Bonsoir,

Orientation pour un tableau.

Option explicit
Const Path = "F:\SCRIPTS"
Dim objFso, SubFolder, strResult, i

Dim aPos()
ReDim aPos(0)

Set objFso = CreateObject("Scripting.FileSystemObject")
ShowListFolder objFso.GetFolder(Path)
strResult = ""

For i=0 To UBound(aPos)
    strResult = strResult & vbCrLf & aPos(i)
Next

MsgBox strResult

Set objFso = nothing
'------------------------
Sub ShowListFolder(Folder)
    For Each Subfolder in Folder.SubFolders
        ReDim Preserve aPos(UBound(aPos) + 1)
        aPos(UBound(aPos)) = SubFolder.Path
        ShowListFolder SubFolder
    Next
End Sub

jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 déc. 2008 à 22:50
 Bonsoir,

A noter que

For i=0 To UBound(aPos)
    strResult = strResult & vbCrLf & aPos(i)
Next

MsgBox strResult

peut être remplacé par

MsgBox Join(aPos,vbCr)

jean-marc
0
Rejoignez-nous