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 :

[E-07] date de dernière modification d'un fichier


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Points : 27
    Points
    27
    Par défaut [E-07] date de dernière modification d'un fichier
    Bonjour,

    J'ai besoin de parcourir tous les fichiers d'un dossier donné et de ses sous-dossiers, et d'effectuer un traitement particulier uniquement si la date de dernière modification est supérieure à une certaine valeur.

    J'ai trouvé sur ce site le script suivant, pour parcourir tous les fichiers :
    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
    32
    Private Sub Lire(ByVal sChemin As String, ByVal Recursif As Boolean)
    Dim FSO As Object, Dossier As Object, Fichier As String
    Dim oFile As scripting.file
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sChemin)
     
        Fichier = Dir$(sChemin & "\*.*")
        Do While Fichier <> ""
            'If Right(Fichier, 4) = ".xls" Or Right(Fichier, 5) = ".xlsx" Or Right(Fichier, 5) = ".xlsm" Then
            NbFichiers = NbFichiers + 1
            With shfiles
                .Cells(NbFichiers, 1) = sChemin
                .Cells(NbFichiers, 2) = Fichier
            End With
            a = Read_expat_file(sChemin & "\", Fichier)
            End If
            Fichier = Dir$()
            Application.StatusBar = "Files : " & NbFichiers & " Directories : " & NbDossiers
     
        Loop
     
        If Recursif Then
            For Each Dossier In Dossier.SubFolders
                NbDossiers = NbDossiers + 1
                If Right(Dossier, 3) <> "old" And Right(Dossier, 3) <> "Old" Then
                    Lire Dossier.Path, True
                End If
            Next Dossier
        End If
     
        Set FSO = Nothing
    End Sub
    J'ai également trouvé cette discussion http://www.developpez.net/forums/d20...feuille-excel/ qui a l'air de faire ce que je veux, mais Excel bugge sur le oFile (en particulier il ne reconnait pas le type scripting.file j'ai l'impression).

    Faut-il activer des références particulières pour avoir le type scripting.file ?
    Pouvez-vous m'aider à faire évoluer mon code pour obtenir la date de dernière modification des fichiers ?

    Merci beaucoup

  2. #2
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    Par défaut
    bonjour,

    La propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object.DateLastModified
    peut être la solution, objet étant un file dans ce cas là.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    mon problème est que je ne crois pas avoir d'objet file dans mon code.

    en particulier, je ne sais pas ce que l'instruction fait

  4. #4
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Points : 323
    Points
    323
    Par défaut
    Cette instruction te liste tous les fichier contenus dans le dossier schemin et ses sous-dossiers.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par Library Voir le message
    Faut-il activer des références particulières pour avoir le type scripting.file ?
    Ben ouais, justement

    Moi, je te propose donc (comme d'hab) de laisser FSO là où il est (ou, d'ailleurs, il risque de ne pas être ...) et de rester indépendant ...
    Voilà donc, avec VB uniquement, ce que tu as écrit, complété et avec option...:

    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
    32
    33
    34
    35
    36
    37
    Option Explicit
    Private Sub Command1_Click()
       Dim repertoire As String, date_limite As Date
       repertoire = "d:\monoutil" ' ici ton répertoire à fouiller
       date_limite = "01/01/1996" ' ici ta date limite
       cherchons repertoire, date_limite
    End Sub
     
    Sub cherchons(ByVal rep As String, ByVal borne As Date)
      Dim nomfic As String, nbr As Integer
      Dim tremplin As String
      Dim i As Integer
      If Right$(rep, 1) <> "\" Then rep = rep & "\"
      nomfic = Dir$(rep, vbDirectory)
      nbr = 1
      Do While nomfic <> ""
        If nomfic <> "." And nomfic <> ".." Then
          tremplin = rep & nomfic
          If GetAttr(tremplin) And vbDirectory And UCase(Right(tremplin, 3))  <>  "OLD" Then
            cherchons tremplin, borne
            nomfic = Dir$(rep, vbDirectory)
            For i = 2 To nbr
              nomfic = Dir$
            Next
          Else
            If FileDateTime(tremplin) < borne Then
              'si tu veux mettre le résultat dans une listbox enlève le ' de la ligne suivante)
              'List1.AddItem tremplin & ")" & "  " & FileDateTime(tremplin) '<<<<<=========
              'si tu veux supprimer directement le fichier (enlève le ' de la ligne suivante)
              'Kill tremplin & ")" & "  " & FileDateTime(tremplin)  '<<<<<=========
            End If
          End If
        End If
        nomfic = Dir$
        nbr = nbr + 1
      Loop
    End Sub

    Regarde les lignes marqués d'un <<<<=====
    Laisse celle(s) qui te convient/conviennent en fonction de ce que tu veux faire.
    La première si tu veux afficher ou non dans une listbox (à insérer alors, avec le nom List1)
    La deuxième si tu veux zigouiller les fichiers ainsi trouvés
    Il va de soi que tu peux faire toutes les combinaisons possibles (lister et zigouiller - Lister seulement - zigouiller seulement).
    Voilà

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Merci !

    Finalement je ne me suis servi que de , qui a l'air de faire tout ce que je veux

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

Discussions similaires

  1. pb date de dernière modification d'un fichier
    Par papat2006 dans le forum C#
    Réponses: 1
    Dernier message: 28/02/2009, 17h05
  2. Date de dernière modification d'un fichier
    Par Olivier Regnier dans le forum Web
    Réponses: 1
    Dernier message: 25/09/2008, 00h14
  3. [PB 9 -> PB 11] Date de dernière modification d'un fichier
    Par hicks51100 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 27/06/2008, 15h26
  4. Connaître la date de dernière modification d'un fichier
    Par Olivier Regnier dans le forum Web
    Réponses: 9
    Dernier message: 08/11/2007, 15h34
  5. Date de dernière modification d'un fichier
    Par defacta dans le forum Langage
    Réponses: 1
    Dernier message: 04/09/2007, 13h10

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