Excel ouvrir le dernier classeurs créé

Résolu
Didoo -  
 Didoo -
Bonjour,

J'aimerais adapter la formule ci-dessous ( Macro pour ouvrir le dernier documents words créé) pour que celle ci fonctionne sur excel.

Dim Chemin As String
Function DernierFichier(Chemin As String) As String
Dim Fichier As String, DerniereDate As Date
Fichier = Dir(Chemin)
Do While Fichier <> ""
If FileDateTime(Chemin & Fichier) > DerniereDate Then
DerniereDate = FileDateTime(Chemin & Fichier)
DernierFichier = Fichier
End If
Fichier = Dir()
Loop
End Function

Sub OuvrirDernierDoc()
Chemin = "C:\TEST"
ChangeFileOpenDirectory Chemin
workbooks.Open FileName:=DernierFichier(Chemin)
End Sub

La macro excel ne reconnait pas la ligne de code "ChangeFileOpenDirectory Chemin" et me créé une erreur.

Merci pour votre aide

5 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    La macro excel ne reconnait pas la ligne de code "ChangeFileOpenDirectory Chemin" et me créé une erreur.
    il y a bien d'autres choses que la macro ne reconnait pas....

    changeFileOpenDirectory devient Chdir....
    mais avant de remplacer cela d'une manière brutale et d'être déçu...
    je te conseille de jeter un oeil ( tu pourras toujours le récuperer après ) sur
    la partie de l'aide VBA FileSystemObjet.

    Tu vas constater plusieurs erreurs / différences .

    donc il faut recoder en utilisant la méthode getfolder et la propriété datecreated
    A+
    0
    1. Didoo
       
      En rajoutant ChDir (Chemin) ça m'ouvre effectivement les fichiers (notamment lorsqu'ils se trouvent dans mes documents) mais pour des fichiers sur le reseaux la macro m'affiche l'erreur 1004 (fichier introuvable, vérifier l'orthographe et la validité de l'emplacement)
      0
  2. Didoo
     
    En fait j'ai réussi à la retraduire de manière plus ou moins bonne:

    Dim Chemin As String
    Function DernierFichier(Chemin As String) As String
    Dim Fichier As String, DerniereDate As Date

    Fichier = Dir(Chemin)
    Do While Fichier <> ""
    If FileDateTime(Chemin & Fichier) > DerniereDate Then
    DerniereDate = FileDateTime(Chemin & Fichier)
    DernierFichier = Fichier
    End If
    Fichier = Dir()
    Loop
    End Function
    Sub OUVRIRLESFICHIERS()
    '
    ' OUVRIRLESFICHIERS Macro

    Chemin = "S:\TEST\"
    Workbooks.Open Filename:=DernierFichier(Chemin)

    End Sub

    en gros j'ai simplement supprimer la ligne qui me posait problème.

    Tout irait pour le mieux si en fait cela n'occurait pas un autre problème:

    En effet la ligne ouvre bien les fichier Excel qui ont été créés dans la même minute que l'exécution de la Macro, elle affiche l'erreur d'exécution 1004 (fichier introuvable, vérifier l'orthographe et la validité de l'emplacement) pour les fichiers créé de manière antérieur à la minute d'exécution de la macro ...
    0
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    j'ai dis " Tu vas constater plusieurs erreurs / différences . "

    je regarde si j'ai un truc dans ma boite à clous ... patiente un moment s'il te plait.
    0
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    donc comme promis,

    je l'ai adapté pour que tu t'y retrouves un peu.
    ça marche sur 2003 et 2007.
    A+
    Si satisfait met en résolu.

    Sub Ouvre_le_dernier_xls() 
    
    Dim Chemin As String 
    
    Chemin = "C:\Data" 
    
    Y = DernierFichierCreer(Chemin) 
    If Y <> "" Then 
        Workbooks.Open Chemin & "\" & Y 
    End If 
    End Sub 
    
    
    
    Function DernierFichierCreer(specdossier) As String 
    
        Dim fso, oDossier, oFichier, sFichier 
        Set fso = CreateObject("Scripting.FileSystemObject") 
        Set oDossier = fso.getfolder(specdossier) 
        Set oFichier = oDossier.Files 
        For Each sFichier In oFichier 
            If Right(sFichier.Name, 3) <> "xls" Then 
               ' ce n'est pas un fichier xls 
            Else 
                ' c'est un fichier xls 
                If sFichier.datecreated > DerniereDate Then 
                   DerniereDate = sFichier.datecreated 
                   DernierFichierCreer = sFichier.Name 
                End If 
           End If 
        Next 
    End Function
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Didoo
     
    Merci beaucoup ça marche au poil !!!

    Je n'y serait jamais arrivé
    0