Rechercher le dossier le plus récent dans un dossier
Maelhia
Messages postés21Date d'inscriptionvendredi 25 mars 2022StatutMembreDernière intervention15 février 2023
-
Modifié le 20 mai 2022 à 13:51
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023
-
26 mai 2022 à 00:59
Bonjour à tous et à toutes !
Je code en Visual Basic sous Visual Studio.
Mon problème est le suivant :
J'ai un dossier de départ (folder) à l'intérieur duquel sont contenus des fichiers (files : .xlsx , .txt) et d'autres dossiers. J'aurais besoin de pouvoir trouver le dossier le plus récemment modifié contenu dans mon dossier de départ et de récupérer son nom.
Une petite image pour illustrer mon propos. Dans mon "DossierDepart" se trouvent les Dossiers "Maison", "Ecole" et "Boulot" et les fichiers "banque" et "texte1".
Je veux que mon programme me dise quel dossier parmi "Maison", "Ecole" ou "Boulot" est celui qui a été modifié le plus récemment et me renvoie son nom ou chemin d'accès.
J'ai un code qui me permet de faire ça avec les fichiers, mais il ne prend pas en compte les dossiers. J'ai essayé de chercher un peu mais je n'arrive pas à l'adapté aux dossiers.
Je vous mets mon code ci-dessous.
Si vous avez des idées ou des questions sur mon problème, n'hésitez pas à laisser un message !!
Merci
Function TrouverDernierDossierModif(str_dossierAChercher) As String
'renvoie le dernier fichier modifié
Dim chemin_Dossier_a_trouver As String
Dim Str_Date As String
Dim nom_Doc As String
Dim Str_DateRec As String
Dim objFso, Folder, oFold, File
objFso = CreateObject("Scripting.FileSystemObject")
oFold = objFso.GetFolder(str_dossierAChercher)
nom_Doc = ""
objFso = CreateObject("Scripting.FileSystemObject")
oFold = objFso.GetFolder(str_dossierAChercher)
Str_DateRec = "01/01/1970 00:00:37"
'on parcourt tous les fichiers du dossier oFold
For Each File In oFold.Files
'récupérer la date du fichier
Str_Date = IO.Directory.GetLastWriteTime(str_dossierAChercher & File.Name)
'si cette date est plus récente que celle du fichier précédent on met à jour et on enregistre le nom du fichier
If Str_DateRec < Str_Date Then
Str_DateRec = Str_Date
nom_Doc = File.Name
End If
Next
chemin_Dossier_a_trouver = str_dossierAChercher & nom_Doc
Return chemin_Dossier_a_trouver
End Function
Maelhia
Messages postés21Date d'inscriptionvendredi 25 mars 2022StatutMembreDernière intervention15 février 20231 20 mai 2022 à 14:29
J'ai trouvé une partie de ma réponse, alors je le poste ici au cas où quelqu'un d'autre en ait besoin :
Il faut utiliser "SubFolders" et "DateLastModified" . Ci-dessous mon code :
objFso = CreateObject("Scripting.FileSystemObject")
oFold = objFso.GetFolder(str_dossierAChercher)
oSFold = oFold.SubFolders
Str_DateRec = "01/01/1970 00:00:37"
'on parcourt tous les fichiers du dossier oFold
For Each Folder In oSFold
MsgBox(Folder.Name)
'récupérer la date du fichier
Str_Date = Folder.DateLastModified
'si cette date est plus récente que celle du fichier précédent on met à jour et on enregistre le nom du fichier
If Str_DateRec < Str_Date Then
Str_DateRec = Str_Date
nom_Doc = Folder.Name
End If
Next
Maelhia
Messages postés21Date d'inscriptionvendredi 25 mars 2022StatutMembreDernière intervention15 février 20231 Modifié le 20 mai 2022 à 14:48
Donc, la suite de mon problème est que chacun de mes dossiers "Maison", "Ecole" et "Boulot" contiennent eux-mêmes plusieurs dossiers et c'est à l'intérieur de ces dossiers que je créé des fichiers word ou autre...
Sauf que si je modifie un sous-dossier, ça ne modifie pas la date du dossier dans lequel il est contenu.
Un petit exemple:
Dans le dossier "Maison" j'ai les dossiers "Cuisine" et "Chambre".
Si dans le dossier "Chambre" je créé un fichier texte, la date de dernière modification du dossier "Chambre" sera la même que la date de création de mon fichier texte. Mais la date de dernière modification du dossier "Maison" ne changera pas.
Savez-vous quelle date/fonction/subterfuge... je peux utiliser pour que la date de dernière modification de mon dossier "Maison" soit la date de dernière modification la plus récente de tous les fichiers contenus dans les sous-dossiers de "Chambre" et "Cuisine".
Y a-t-il une autre fonction que DateLastModified à utiliser?
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 26 mai 2022 à 00:59
Bonjour
Vous dîtes : "Je code en Visual Basic sous Visual Studio"
Pourquoi avoir mis comme section VbScript ?
Si vous codez vraiment en VB Net la classe File conviendrait bien mieux pour les accès aux fichiers que CreateObject du FSO (File System Object) qui est maintenant plus que dépassé si vous utilisiez la dernière version de Visual Studio .
Concernant votre souci pour les dossiers ce que vous faîtes est erroné .
Lorsque le contenu d'un fichier .txt change le dossier dans lequel il se trouve ne change pas . Un dossier change si on y supprime des fichiers ou si on y ajoute des fichiers ou des sous-dossiers .
J'ai utilisé les mêmes termes que vous mais en informatique un dossier est un répertoire .
Modifié le 20 mai 2022 à 14:48
Sauf que si je modifie un sous-dossier, ça ne modifie pas la date du dossier dans lequel il est contenu.
Un petit exemple:
Dans le dossier "Maison" j'ai les dossiers "Cuisine" et "Chambre".
Si dans le dossier "Chambre" je créé un fichier texte, la date de dernière modification du dossier "Chambre" sera la même que la date de création de mon fichier texte. Mais la date de dernière modification du dossier "Maison" ne changera pas.
Savez-vous quelle date/fonction/subterfuge... je peux utiliser pour que la date de dernière modification de mon dossier "Maison" soit la date de dernière modification la plus récente de tous les fichiers contenus dans les sous-dossiers de "Chambre" et "Cuisine".
Y a-t-il une autre fonction que DateLastModified à utiliser?
Merci d'avance pour votre aide et vos idées