[VBA] Prendre la date la plus récente

Résolu/Fermé
MoYoX Messages postés 127 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 21 mars 2014 - 5 avril 2011 à 09:23
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 5 avril 2011 à 11:53
Bonjour tout le monde,

Je suis confronté à un petit problème en VBA ...

En effet, dans mon code, je vérifie, dans un dossier unique, la présence de fichiers.
Avec une For Each, j'ai tout une portion de code qui s'éxécute à chaque fichier présent.

Donc à partir de là j'peux récupérer le chemin, la date, le nom etc ... donc j'arrive à récupérer la date de création de chaque fichier à chaque passage dans la boucle via une FileDateTime, je découpe, toujours à chaque passage dans la boucle, le mois, l'année, le jour ... mais je n'arrive pas à garder la date la plus récente.

J'avais essayé un truc du genre:
Si, à chaque passage dans la boucle, la date est supérieure à celle du passage d'avant, on la garde dans une variable.
J'comptais comparer l'année, puis le mois, puis le jour dans un if dans un if dans un if !
En gros.

Mais je n'y arrive pas ... je ne sais pas pourquoi il me garde une seule date, mais pas la plus récente.

Voilà à quoi ressemble le début de ma boucle:

 For Each objFichier In objDossier.Files

        If (InStr(1, objFichier.Name, ".wav", 1) > 0) Then
           
            If (Mid(objFichier.Name, 1, 1) = "~") Then GoTo label
            finPhrase = ""
            finPhrase = " message vocal."
 
            dateComplete = Left(FileDateTime(objFichier.Path), 10)

            anneeTemp = Right(dateComplete, 4)
            moisTemp = Mid(dateComplete, 4, 2)
            jourTemp = Left(dateComplete, 2)
            
...
            

(oui c'est pour vérifier des messages vocaux provenant du PABX en .wav)
Et c'est là que je bloque.

Si quelqu'un avait une idée, ou un algo qui va bien ... je lui en serait très reconnaissant !
Merci d'avance !


1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 5/04/2011 à 11:56
Bonjour


Dim recent As Long
If IsDate(datecomplete) Then
recent = DateSerial(Year(datecomplete), Month(datecomplete), Day(datecomplete))
End If

recent te donne un nombre représentant le numero de jour de datecomplete
par ex aujourdhui 5/4/11 est le jour 40638 après le 1/1/1900
Michel
1