Déplacer des fichier dans des sous dossier en fonction de leur date de création
benzure
Messages postés11Date d'inscriptionvendredi 9 janvier 2009StatutMembreDernière intervention 1 février 2012
-
9 janv. 2009 à 17:29
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
12 janv. 2009 à 00:51
Bonjour
J'ai de nombreux fichiers dans un repertoire créé chaque soir par un batch,
je souhaiterai via une macro sous excel, trier ce répertoire en déplacant les fichiers dans des sous repertoires (corespondant au mois-annee de création du fichier)
Exemple:
j'ai un fichier créé le 08/01/2009 je souhaite que le script déplace ce fichier dans le dossier 01-2009 et si le dossier n'existe pas le creer
Merci de votre aide
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 janv. 2009 à 19:23
Salut
Pour lister les répertoires, fichiers, créer des répertoires ou fichier ... il y a FileSystemObject.
Si ta macro crée elle même les fichiers, il sera plus facile d'utiliser la date du jour que de rechercher celle des fichiers.
Pour trouver la date d'un fichier --> Tape "vbs date fichier" dans la recherche des Codes du site en excluant .NET
Idem pour FileSystemlObject, souvent appelé FSO
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 10 janv. 2009 à 03:13
Salut
En VBA ca donne ça (je ne connais pas vbscript, mais je suppose que ce n'est pas très différent du VBA)
Option Explicit
Sub traiter()
Dim repSource As String, repDest As String
repSource = "C:\Documents and Settings\Mes documents\temp1" ' nom du répertoire source
repDest = "C:\Documents and Settings\Mes documents\temp2" ' nom du répertoire de destination
triDeplacement repSource, repDest
End Sub
Sub triDeplacement(repSource As String, repDest As String)
Dim fs, folder, fichier
Dim dateCreation As Date
Dim nomRep As String
Dim i As Integer
Set fs = CreateObject("Scripting.FileSystemObject") ' le voila, le fameux fileSystemObject dont parle Jack !
Set folder = fs.getfolder(repSource)
For Each fichier In folder.Files
dateCreation = fichier.datecreated
nomRep = Format(Month(dateCreation), "00") & "-" & Year(dateCreation)
If Not fs.folderexists(repDest & "" & nomRep) Then MkDir repDest & "" & nomRep
fs.movefile repSource & "" & fichier.Name, repDest & "" & nomRep & "" & fichier.Name
Next
End Sub
Dim objFso, objFile, strDate, strDateMonth
Set objFso = CreateObject("Scripting.FileSystemObject")
For Each objFile in objFso.GetFolder(cstPathSource).Files
strDateMonth = Month(objFile.DateLastModified) If Len(strDateMonth) 1 Then strDateMonth "0" & strDateMonth
strDate = strDateMonth & "-" & Year(objFile.DateLastModified)
If Not objFso.FolderExists(cstPathDest & strDate) Then
objFso.CreateFolder(cstPathDest & strDate)
objFso.MoveFile objFile.Path, cstPathDest & strDate & "" & objFile.Name
Else
objFso.MoveFile objFile.Path, cstPathDest & strDate & "" & objFile.Name
End If
Next
Set objFso = Nothing
Attention à la propriété DateCreated, je lui préfère DateLastModified.
jean-marc
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 12 janv. 2009 à 00:51
Bonsoir,
Exemple pour lister les fichiers des sous-répertoires.
Option Explicit
Sub ShowFilesList(argFolder)
Dim objFile, subFolder
For Each objFile In argFolder.Files
If DateDiff("d", objFile.DateCreated,Date) > cstNbrJour Then
Set objDicoFiles(objFile.Path) = objFile
End if
Next
For Each subFolder In argFolder.SubFolders
Call ShowFilesList(subFolder)
Next
End Sub
Const cstNbrJour = 2
Dim objFso, objDicoFiles
Dim strPath, arrDicoKeys
strPath = "F:\SCRIPTS\TEST" 'Dossier à modifier
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objDicoFiles = CreateObject("Scripting.Dictionary")