VBA - Sélection chronologique de fichier dans un répertoire
Résolu
rEVOLV3r
Messages postés
223
Date d'inscription
Statut
Membre
Dernière intervention
-
rEVOLV3r Messages postés 223 Date d'inscription Statut Membre Dernière intervention -
rEVOLV3r Messages postés 223 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici le problème : Dans un répertoire est mis des fichiers de mesures (*.) durant la journée mais ils ne doivent pas être modifiés durant 8h après leurs mise dans ce répertoire.
Ma macro vient donc regarder chaque fichier présent dans le but de de déplacer et prend sa date de modification pour voir si les 8 heures sont écoulées. Cependant dès qu'un fichier ne doit pas être bougé (<8h) ma macro se stope.
Code de sélection du fichier :
Comment faire pour modifier ce "Exit Do" afin qu'Excel continue de prendre les autres fichiers et ne se stope pas dès qu'un fichier est contrôlé trop jeune ?
Peut-etre les classer par ordre de modification, ou encore les prendre selon leur nom ? Je vous remercie déjà pour vos réponses !
Meilleures salutations,
rEVOLV3r
Voici le problème : Dans un répertoire est mis des fichiers de mesures (*.) durant la journée mais ils ne doivent pas être modifiés durant 8h après leurs mise dans ce répertoire.
Ma macro vient donc regarder chaque fichier présent dans le but de de déplacer et prend sa date de modification pour voir si les 8 heures sont écoulées. Cependant dès qu'un fichier ne doit pas être bougé (<8h) ma macro se stope.
Code de sélection du fichier :
While fichier <> "" If Right(fichier, 3) <> "txt" Then 'TRIAGE DES SEQUENCES 'Commencement par la prise des informations Set wbsource = Workbooks.Open(CheminOpen & "\" & fichier) 'open the file nomdufichier = ActiveWorkbook.Name DateModif = FileDateTime(nomdufichier) EcartDates = DateDiff("h", DateModif, Now, vbMonday, vbFirstJan1) If EcartDates < Limite Then 'MsgBox ("OF " & nomdufichier & " EN COURS !" & Chr(10) & "Réessayez dans : " & Limite - EcartDates & "Heures") wbsource.Close False Exit Do End If . . . fichier = Dir End If Loop
Comment faire pour modifier ce "Exit Do" afin qu'Excel continue de prendre les autres fichiers et ne se stope pas dès qu'un fichier est contrôlé trop jeune ?
Peut-etre les classer par ordre de modification, ou encore les prendre selon leur nom ? Je vous remercie déjà pour vos réponses !
Meilleures salutations,
rEVOLV3r
A voir également:
- VBA - Sélection chronologique de fichier dans un répertoire
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
4 réponses
bonjour
sans ouvrir les fichiers et en laissant le choix d'essayer d'autres fichiers ou non
avec
???
EcartDates = DateDiff("h", DateModif, Now, vbMonday, vbFirstJan1)
par
EcartDates = DateDiff("h", DateModif, Now)
Michel
sans ouvrir les fichiers et en laissant le choix d'essayer d'autres fichiers ou non
avec
Set ObjFich = CreateObject("Scripting.fileSystemObject")
ChDir "D:\documents" 'A adapter
Fich = Dir("*.txt")
While Fich <> ""
Set nomfich = ObjFich.GetFile(Fich)
dermodif = nomfich.dateLastModified
'tes codes d'évaluation
Rep = MsgBox(Fich & "en cours, continuer ?", vbYesNo)
If Rep = vbNo Then Exit Sub
Fich = Dir
Wend
???
EcartDates = DateDiff("h", DateModif, Now, vbMonday, vbFirstJan1)
par
EcartDates = DateDiff("h", DateModif, Now)
Michel
Salut,
Tu peux faire comme ça :
Tu peux faire comme ça :
If EcartDates < Limite Then 'MsgBox ("OF " & nomdufichier & " EN COURS !" & Chr(10) & "Réessayez dans : " & Limite - EcartDates & "Heures") wbsource.Close False Else 'ICI le traitement à faire si fichier à traiter ' ' End If
Bonjour,
Merci beaucoup pour votre réponse, mais malheureusement cela ne fonctionne pas.
Il faudrait que lorsque le code repère un fichier trop jeune, il ne le prenne pas en compte mais continue de trier les autres. Voici une petite explication graphique ;-)
Répertoire :
fichier1 (vieux)
fichier2 (jeune)
fichier3 (vieux)
fichier4 (vieux)
Step 1 macro : fichier1 analysé -> vieux -> déplacé dans un autre répertoire
Step 2 macro : fichier2 analysé -> jeune -> on passe au suivant sans le toucher
step 3 macro : fichier3 analysé -> vieux -> déplacé dans un autre répertoire
etc.
Il faudrait donc qu'excel passe au suivant mais ne le reteste pas, créer une exclusion pour les noms de fichiers testé trop jeunes. S'il n'y a pas de manière facile je créerai une "mémoire tampon" avec les noms des fichiers à exclure...
Meilleures salutations,
rEVOLV3r
Merci beaucoup pour votre réponse, mais malheureusement cela ne fonctionne pas.
Il faudrait que lorsque le code repère un fichier trop jeune, il ne le prenne pas en compte mais continue de trier les autres. Voici une petite explication graphique ;-)
Répertoire :
fichier1 (vieux)
fichier2 (jeune)
fichier3 (vieux)
fichier4 (vieux)
Step 1 macro : fichier1 analysé -> vieux -> déplacé dans un autre répertoire
Step 2 macro : fichier2 analysé -> jeune -> on passe au suivant sans le toucher
step 3 macro : fichier3 analysé -> vieux -> déplacé dans un autre répertoire
etc.
Il faudrait donc qu'excel passe au suivant mais ne le reteste pas, créer une exclusion pour les noms de fichiers testé trop jeunes. S'il n'y a pas de manière facile je créerai une "mémoire tampon" avec les noms des fichiers à exclure...
Meilleures salutations,
rEVOLV3r