IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ouvrir dernier fichier modifié d'un dossier [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Ouvrir dernier fichier modifié d'un dossier
    Bonjour à tous,

    Comme dit dans le titre je souhaite ouvrir le dernier fichier .csv modifié d'un dossier.
    Malheureusement, le code que j'utilise ci-dessous fonctionne mais n'ouvre pas le dernier fichier modifié et je dois avouer que je ne sais pas où se trouve mon erreur.

    Un avis extérieur pourrait-il m'aider sur ce point svp ?

    Je vous remercie d'avance !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Option Explicit
     
    Sub LastFile()
     
    Dim LinkCMTO As String
    Dim AdresseCMTO As String
    Dim Wbk1 As Workbook
    Dim fso As Object
    Dim f As Object
    Dim file As Object
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    LinkCMTO = "C:\Mesdocs\"
     
    For Each f In fso.GetFolder(LinkCMTO).Files
        If LCase(Right(f.Name, 4)) = ".csv" Then
          If file Is Nothing Then
            Set file = f
          Else
            If f.Datecreated > file.Datecreated Then Set file = f
          End If
        End If
      Next
      If Not file Is Nothing Then
        AdresseCMTO = file.Path
      End If
    Set Wbk1 = Workbooks.Open(AdresseCMTO)
    Set fso = nothing
    Set file = nothing
     
    End sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Bonjour,

    Je n'utilise jamais le FileSystemObject... mais je pense que ce bout de code retourne le chemin, mais pas le nom du fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      If Not file Is Nothing Then
        AdresseCMTO = file.Path
      End If
    Est-ce possible ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    C'est possible, ça retourne le chemin et le nom du fichier.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Essaie comme ceci pour voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub DernierFichier()
        Dim Chemin As String, Fichier As String, FichierTemp As String
     
        Chemin = "C:\Mesdocs\"
     
        Fichier = Dir(Chemin, vbArchive)
        Do While Left(Fichier, 1) <> "." And Fichier <> ""
     
            If Right(LCase(Fichier), 3) = "csv" Then
                If FichierTemp <> "" Then
                    If FileDateTime(Chemin & Fichier) > FileDateTime(Chemin & FichierTemp) Then
                        FichierTemp = Fichier
                    End If
                Else
                    FichierTemp = Fichier
                End If
            End If
            Fichier = Dir
        Loop
     
        MsgBox FichierTemp
     
    End Sub

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 167
    Points
    10 167
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai pas la documentation de fso sous la main; mais au lieu d'utiliser datecreated, regarde, s'il n'y aurait pas datelastmodified ou datelastsaved. En principe, ce sont des indicateurs plus fiables que datecreated, dès que le fichier a été moindrement utilisé après la date de création.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Datelastmodified semble fonctionner à merveille !

    En revanche parmi, la macro que tu m'as donné ne s'arrête jamais...

    Merci à vous deux !

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Ça fonctionne pourtant très bien ici...
    L'as-tu copiée telle quelle ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Je l'ai copié/collé telle quelle en adaptant à ma macro... C'est bizarre !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouvrir dernier fichier enregistré dans un dossier
    Par adragon dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2014, 10h38
  2. Ouvrir automatiquement le dernier fichier créé dans un dossier
    Par Maxime082 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 06/06/2011, 17h45
  3. Comment Ouvrir les fichier provenant d'un dossier?
    Par totonin dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 22/04/2009, 19h42
  4. Réponses: 0
    Dernier message: 02/12/2008, 17h07
  5. Ouvrir plusieurs fichier textes dans un dossier : *texte.txt
    Par Jenn74 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2007, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo