Rechercher le fichier le plus récent avec critère

Résolu/Fermé
icecube - 22 févr. 2018 à 18:20
 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

A voir également:

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
22 févr. 2018 à 20:15
bonsoir, suggestion:
If file.DateCreated > fDate and left(file.name,9) = "FP21_FIN_" Then 
0
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\
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > 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
0
icecube > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
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 :)
0
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\
0