VBA - Sélection chronologique de fichier dans un répertoire

Résolu/Fermé
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - Modifié par pijaku le 21/07/2014 à 08:32
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 - 21 juil. 2014 à 11:27
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 :

 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:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 21/07/2014 à 10:59
bonjour

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
1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
21 juil. 2014 à 08:35
Salut,

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

0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
21 juil. 2014 à 10:05
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
0
rEVOLV3r Messages postés 223 Date d'inscription jeudi 12 août 2010 Statut Membre Dernière intervention 21 septembre 2022 28
21 juil. 2014 à 11:27
Merci bien a tous pour votre aide ! Vous m'avez donné l'idée pour résoudre mon problème. :-)

J'ai juste utilisé Fichier = Dir et un...goto ouai j'en suis pas fier mais ca m'évite de devoir modifié ma macro de 743 lignes ^^

Merci bien je mets en résolu.
0