Ouvrir le dernier fichier créé/modifié d'un dossier

Bonjour,

Je cherche à créer une macro qui permette :

- d'ouvrir le dernier (par date de création/modification) fichier .csv.

Le nom du fichier a toujours la même structure (FX_Rev20090125.csv, FX_Rev20090126.csv, etc.).

Merci par avance pour votre aide.

Bonjour,

Je suis malheureusement toujours à la recherche d'une solution.

Merci pour votre aide.

Bonjour

Je ne connais pas grand chose à VBA, mais, en bidouille....

Une petite combine qui te crée le lien Hypertexte sur le fichier.

Edit: J'ai un peu modifié mon message et ajouté un bout de code fait avec l'enregistreur (Module 2)

https://www.excel-pratique.com/~files/doc2/WLPwSRepertoire_indique.xls

Cordialement

Bonsoir

Tu peux tester le code qui suit

Cordialement

Option Explicit

Sub Cherche()

Dim Répert1 As Object
Dim Syst_fic As Object
Dim Fic1 As Object
Dim Fic_nom As String
Dim Fic_acces As Date
Dim Plus_recent_nom As String
Dim Plus_recent_date As Date
Dim Répertoire1 As String
Set Syst_fic = CreateObject("Scripting.FileSystemObject")

'Nom du répertoire à scanner
Répertoire1 = Environ("USERPROFILE") & "\documents\excel"

Set Répert1 = Syst_fic.GetFolder(Répertoire1)

For Each Fic1 In Répert1.Files
    Fic_nom = Fic1.Name
    'on ne s'interresse qu'au fichier ".csv"
    If Right(LCase(Fic_nom), 4) = ".csv" Then
        Fic_acces = Fic1.datelastaccessed
        If Fic_acces > Plus_recent_date Then
            Plus_recent_date = Fic_acces
            Plus_recent_nom = Fic_nom
        End If
    End If
Next

If Plus_recent_nom <> "" Then
    MsgBox "le fichier le plus récent est : " & Plus_recent_nom
Else
    MsgBox "Pas de fichier trouvé"
End If

End Sub

bonjour,

une autre proposition:

Sub galopin()
Dim MyPath$, FName$, Mem$, i
MyPath = "c:\blabla\"    ' Définit le chemin d'accès.
FName = Dir(MyPath & "*.csv")
Mem = FName
i = FileDateTime(FName)
  Do While FName <> ""
    If FileDateTime(FName) > i Then
    Mem = FName
    i = FileDateTime(FName)
    End If
  FName = Dir
  Loop

MsgBox Mem

End Sub

Bien sur il faut éditer le "blabla" (ligne 3)...

Si le chemin est le chemin de travail par défaut alors on peut écrire tout simplement :

Sub galopin()
Dim FName$, Mem$, i
FName = Dir( "*.csv")
Mem = FName
i = FileDateTime(FName)
  Do While FName <> ""
    If FileDateTime(FName) > i Then
    Mem = FName
    i = FileDateTime(FName)
    End If
  FName = Dir
  Loop

MsgBox Mem

End Sub

A+

Merci à vous tous pour votre aide.

Je vais maintenant prendre le temps de tester ces solutions.

Bonjour Demeb,

La macro fonctionne parfaitement pour identifier le fichier le plus récent mais malheureusement elle n'ouvre pas le fichier en question.

Comment faire ?

Bonjour Galopin01,

Je n'arrive pas à faire fonctionner la macro.

Si je la place dans un module j'obtiens le message d'erreur :

Erreur d'exécution '53' Fichier introuvable

Si je place la macro au niveai du workbook les message d'erreur est juste "Fichier introuvable".

Ce qui est étrabge c'est que le chemin d'accès indiqué est exactement le même que celui utilisé dans la macro de Demeb.

Je ne comprends pas ce que je fais de faux.

Sub galopin()

End Sub

Encore merci à vous tous.

Bonjour

ericlbt, vu ton explication sur la numérotation des fichiers, pour moi, le numéro le plus élevé correspondait au dernier fichier.

A partir de cela, le fichier joint contient un code qui ouvre bien le fichier dont le numéro est le plus élevé (du moins en Excel 2003)

Voudrais-tu, si le système de numérotation est bien celui-là, tester le code en question.

Car, en ce qui me concerne, cela fonctionne parfaitement.

Cordialement

Bonsoir

Au vu de ta demande, pour faire fonctionner la macro de Galopin01, il te manques un "\" dans la définition du chemin d'accès :

MyPath = "G:\Posit_Devises_ddmmmyy\FX-REVAL KONDOR\" ' Définit le chemin d'accès.

Pour ouvrir le fichier le plus récent via ma macro, remplace la ligne :

Répertoire1 = Environ("USERPROFILE") & "\documents\excel"

par celle-ci :

Répertoire1 = "G:\Posit_Devises_ddmmmyy\FX-REVAL KONDOR" ' Définit le chemin d'accès.

et la ligne :

MsgBox "le fichier le plus récent est : " & Plus_recent_nom

par celle-ci :

Workbooks.Open Répertoire1 & "\" & Plus_recent_nom

Cordialement

Bonjour Galopin01,

Je ne comprends pas ce que je fais de faux.

Sub galopin()

Dim MyPath$, FName$, Mem$, i

MyPath = "G:\Posit_Devises_ddmmmyy\FX-REVAL KONDOR" ' Définit le chemin d'accès.

il manque un "\" à la fin du string de MyPath :

MyPath = "G:\Posit_Devises_ddmmmyy\FX-REVAL KONDOR\" ' Définit le chemin d'accès.

La suite sans changement...

A+

Demeb : Salut !

On a frisé la collision...

C'est sur que pour ouvrir un fichier une instruction Open c'est mieux qu'un MsgBox...

On peut bien sur faire la même observation sur ma macro en mettant à la fin à la place de MsgBox Mem :

Workbooks.Open MyPath & Mem

On peux aussi rajouter que ces macros sont destinés à loger dans un module standart Module1; Module2... et non dans ThisWorkbook ni dans des modules de Feuilles...

A+

Bonjour Demeb, bonjour à toutes et à tous,

Super, cela fonctionne parfaitement en utilisant le macro de Demeb.

Jutse une dernière question !

Une fois le fichier ouvert je fais quelques modifications de format et copie certaines données vers un autre fichier.

Une fois ceci effectué j'aimerais que le fichier se ferme automatiquement sans sauver les modifications.

Encore merci pour votre très précieuse aide.

Bonjour

Pour fermer sans enregistrer

ActiveWorkbook.Saved = True
ActiveWorkbook.Close

et sans message demandant l'enregistrement?

Sub FermeSansMessage()
ActiveWorkBook.Close SaveChanges:=False

Cordialement

Merci pour cette rapide réponse mais sauf erreur cette macro va fermer le fichier que j'utilise et non le fichier que j'ai importé/ouvert (dernier fichier .csv créé).

En fait je travaille sur un fichier.xls

J'ouvre ensuite par macro ( ) fichier.csv

Tout en continuant à travailler sur fichier.xls je voudrais que que fichier.csv se ferme sans être modifié et sans message d'alerte.

Bonjour à tous,

Personnellement pour mon besoin j'ai utilisé la macro de Deneb. Cette macro est dans un fichier Excel qui ouvre un ppt pour faire des impressions écran, puis ouvrir le dernier fichier excel connu et effectuer d'autres impressions écran.

Le problème est que à la fin, lorsque le fichier le plus récent est trouvé, la suite de la macro est de réaliser des impressions écran dans ce fichier sur différents onglets... Mais la macro s'arrête car la macro de Deneb ne me permet pas de dire d'effectuer ces impressions écran dans ce dernier fichier.

Est ce que quelqu'un aurait une suggestion?

Merci par avance,

Cindy

Rechercher des sujets similaires à "ouvrir dernier fichier cree modifie dossier"