Menu

Rechercher le fichier le plus récent avec critère [Résolu]

icecube - 22 févr. 2018 à 18:20 - Dernière réponse :  icecube
- 22 févr. 2018 à 20:50
bonjour a tous,

j'ai besoin d'une fonction qui cherche dans un répertoire , le fichier le plus récent dans le nom commence par FP21_FIN_

pour vous aider j'ai cette macro qui recherche le dernier fichier mais je ne sais pas comment lui intégrer le critère du fichier qui commence par FP21_FIN_

je vous remrcie par avnce

Function FindLastFile(Path As String)
'cette fonction permet de chercher le fichier le plus récent dans le répertoire
   Dim fName As String
    Dim fDate As Date
    
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim folder
    Set folder = fso.GetFolder(Path)
    
    Dim Files
    Set Files = folder.Files

    Dim file
    For Each file In Files
        If file.DateCreated > fDate Then
            fDate = file.DateCreated
            fName = file.Name
        End If
        Debug.Print file.Name, file.DateCreated, "=>", fName, fDate
    Next
    
    Set Files = Nothing
    Set folder = Nothing
    Set fso = Nothing

    FindLastFile = Path & "\" & fName
    
End Function

Afficher la suite 

Votre réponse

5 réponses

yg_be 5756 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 juin 2018 Dernière intervention - 22 févr. 2018 à 20:15
0
Merci
bonsoir, suggestion:
If file.DateCreated > fDate and left(file.name,9) = "FP21_FIN_" Then 
salut, heu ce qui ne vas pas c'est que j'ai besoin qu'il me trouve un seule fichier; alors que la la fonction affiche deux malgré que l''heure de leur création est différente: voici le resultat :
tu vois la moi j veux qu"il récupére seulement le deuxieme car il a été créé a 20:19

?FindLastFile("C:\Users\Marseille\Desktop\OIG")
FP21_FIN_20180222_20185400.xlsx 22/02/2018 20:10:39 => 00:00:00
FP21_FIN_20180222_20203300.xlsx 22/02/2018 20:19:31 => 00:00:00
C:\Users\Marseille\Desktop\OIG\
yg_be 5756 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 juin 2018 Dernière intervention > icecube - 22 févr. 2018 à 20:45
pourquoi pas:
For Each file In Files
        If file.DateCreated > fDate and left(file.name,9) = "FP21_FIN_" Then 
            fDate = file.DateCreated
            fName = file.Name
        End If
Next file
Debug.Print "file.Name, file.DateCreated, =>", fName, fDate
icecube > yg_be 5756 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 juin 2018 Dernière intervention - 22 févr. 2018 à 20:50
OUI LA CA MARCHE NICKEL . c'est formidable exactement ce que recherche.

je te remercie beaucoup c'est tres gentil, tu viens de me sauver franchement c'est cool.

Bonne soiré a toi :)
Jj'ai fais une autre test mais finalement cette commande ne fais pas le boulot car j'ai changé un peu le nom du deuxieme fichier mais elle récupére quand meme donc la commande est fausse pour le moment: voici le résultat : Left(file.Name, 9) = "FP21_FIN*.xlsx" Then

?FindLastFile("C:\Users\Marseille\Desktop\OIG")
FP21_FIN_20180222_20185400.xlsx 22/02/2018 20:10:39 => 00:00:00
FP51_FIN_20180222_20203300.xlsx 22/02/2018 20:19:31 => 00:00:00
C:\Users\Marseille\Desktop\OIG\
Commenter la réponse de yg_be