Liste des sous dossiers et comptabiliser leurs fichiers

fabefouge Messages postés 6 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 20 avril 2011 - 4 mars 2011 à 16:50
DevLama Messages postés 356 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 18 novembre 2021 - 15 nov. 2011 à 16:09
Bonjour,

J'ai créé un petit script me permettant de comptabiliser le nombre de fichiers dans un répertoire et de l'inscrire dans un fichier texte. Voir ci dessous :

Dim Path
Path = "e:\Fic\GAPR"
'MsgBox ShowFolderList(Path),vbmessage,"Fichiers contenus dans le répertoire " & Path

Fichier2 = "e:\temps\TEST1.TXT"

Set MyObject = CreateObject("Scripting.FileSystemObject" )
Set OutFile = MyObject.CreateTextFile(Fichier2,True)

OutFile.Write "NbrFic: "
OutFile.Write ShowFolderList(Path)

OutFile.Close



Function ShowFolderList(strPath)
Dim fso, Dossiers, fic, fichiers, strListe, nbre
Set fso = CreateObject("Scripting.FileSystemObject")

Set Dossiers = fso.GetFolder(strPath)
Set fic = Dossiers.Files
'pour chaque fichier de mon objet files de mon objet fso...:)
For Each fichiers in fic
'le nom du fichier
nbre = nbre + 1
'strListe = strListe & vbcrlf & vbcrlf & fichiers.Name & " Date (jjmmaa) : " & fichiers.DateLastModified & " Taille (octet) : " & fichiers.Size
Next
ShowFolderList = nbre
'ShowFolderList = strListe
End Function
Set fso = Nothing


Je rencontre aujourd'hui une nouvelle problématique. Chaque jour, un ou plusieurs sous-répertoires sont créés et les fichiers viennent s'y déposés. Je souhaiterais donc lister uniquement ces nouveaux sous-répertoires (création à la date du jour) et ensuite comptabiliser le nombre de fichiers y figurant et inscrire le résultat dans un fichier texte :
Rep1: 123
Rep2: 10000
etc...

Ca fait plusieurs jours que je galère et je ne trouve pas de solution pour adapter mon script. Surement n'est-il pas adapter à la base....

Je vous remercie par avance pour vos idées, suggestions et conseils.

Tchou

6 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
4 mars 2011 à 20:10
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
5 mars 2011 à 08:48
 Bonjour,

Tu peux t'inspirer de cet exemple.

MsgBox FnShowFolderList("F:", Date, strList)

Function FnShowFolderList(argPath, argDate, strList) 
   Dim objFso, objSubFolderItem, objSubFileItem  
   Set objFso = CreateObject("Scripting.FileSystemObject") 
   
   If Not objFso.FolderExists(argPath) Then Exit Function

   For Each objSubFolderItem In objFso.GetFolder(argPath).SubFolders 
       If DateValue(objSubFolderItem.DateCreated) = argDate Then 
          strList = strList & vbCrLf & objSubFolderItem.Path & _
                    Space(3) & objSubFolderItem.Files.Count
       End If
       FnShowFolderList objSubFolderItem.Path, argDate, strList
   Next 

   Set objFso = Nothing 
   FnShowFolderList = strList    
End Function 



jean-marc
0
fabefouge Messages postés 6 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 20 avril 2011
5 mars 2011 à 09:57
Bonjour et merci pour vos réponses.
Ton code Jean-Marc répond parfaitement à ma demande, à moi maintenant de diriger le tout dans un fichier.
Merci pour tous

Tchou
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
5 mars 2011 à 10:54
Pour l'écriture du fichier


Option Explicit
Const MyFile = "D:\Test.txt" 
Dim objFso, objTextFile
Set objFso = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFso.CreateTextFile(MyFile, True)   

Call FnShowFolderList("F:", Date)

objTextFile.Close
Set objTextFile = Nothing
Set objFso = Nothing
'################################################
Function FnShowFolderList(argPath, argDate) 
   Dim objSubFolderItem 
   
   If Not objFso.FolderExists(argPath) Then Exit Function

   For Each objSubFolderItem In objFso.GetFolder(argPath).SubFolders 
       If DateValue(objSubFolderItem.DateCreated) = argDate Then 
          objTextFile.Write objSubFolderItem.Path & Chr(58) & Space(1) &_
                            objSubFolderItem.Files.Count & vbcrlf
       End If
       FnShowFolderList objSubFolderItem.Path, argDate
   Next 
End Function 

 



jean-marc
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fabefouge Messages postés 6 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 20 avril 2011
5 mars 2011 à 10:58
Une seule chose à dire : perfect


Tchou
0
DevLama Messages postés 356 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 18 novembre 2021 10
15 nov. 2011 à 16:09
POur ecrire dans un fichierv tub peux utiliser :
Dim NumFile
NumFile=FreeFile
Open "Nomdufichier.ext" For Append as#NumFile
Print #NumFile,"Hornel LAMA"
Close#NumFile

0
Rejoignez-nous