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 :

vérifier date d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Par défaut vérifier date d'un fichier
    Bonjour, je voudrais vérifier la date de modification du dernier fichier contenu dans un dossier afin de savoir si j'enregistre ou pas !
    J'ai donc ce code :

    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
    Private Sub SaveClasseurArchiveP()
    Dim cpt0 As Integer
    Dim rep0 As String
    Dim temp0 As String
     
    temp0 = CurrentProject.Path & "\Archives\*.*"
    'on obtient le premier fichier ou répertoire qui est dans le dossier concerné
    rep0 = Dir(temp0, vbDirectory)
     
    'on doit commencer par verifier si le repertoire existe deja
    'si non alors on doit le creer et ajouter la base
    If (rep0 = "") Then
        temp0 = CurrentProject.Path & "\Archives\"
        MkDir (temp0)
        MsgBox ("Le dossier de sauvegarde vient d'être créé"), vbInformation, "Création"
    Else
        'si oui alors on doit compter le nb de bases deja enregistrées
        'boucle tant que le répertoire n'a pas été entièrement parcouru
        Do While (rep0 <> "")
            temp0 = CurrentProject.Path & "\Archives\"
            If (GetAttr(temp0 & rep0) And vbDirectory) = vbDirectory Then
            Else
                cpt0 = cpt0 + 1
            End If
            rep0 = Dir
        Loop
    End If
     ' On verifie la date du dernier fichier
     Dim MyStamp As Date
     Dim vDate As Date
    vDate = Date
    MyStamp = FileDateTime(rep0)
    ' je lance la macro d enregistrement s il n existe pas
    If MyStamp <> vDate Then
    SaveClasseurArchive
    End If
    End Sub
    est ce bon ?
    merci de me répondre !

    yahi

  2. #2
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 36
    Par défaut

    Est-ce-que tu l'as testé ce code avant de nous demander s'il est bon ?
    J'ai bien envie de t'aider, mais je suis un peu flemmard, alors je préfère me pencher sur ta question seulement s'il y a un problème.
    @+Dam2P

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Par défaut
    Non ca fonctionne pas !
    j'ai une erreur 424 : objet requis sur cette ligne :

    temp0 = CurrentProject.Path & "\Archives\*.*"

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Par défaut
    peut etre que CurrentProject.Path fait appel au fichier actuellement ouvert? si c'est le cas, il n'est effectivement pas dans le dossier archive !
    la est ptre le pb. Il fait que ca selectionne le dernier fichier modifier de ce dossier archives !
    quand je le remplace par ThisWorkbook.Path ca marche mieux mais j'ai une autre erreur :
    MyStamp = FileDateTime(rep0)

    me renvoie pas la date du fichier donné par la variable rep0 mais me dit fichier introuvable !

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    Tu peux tester

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Option Explicit
    Option Base 1
     
     
    Sub Tri_Fichiers()
        Dim Fichier As String, Chemin As String
        Dim Tableau()
        Dim m As Integer, i As Integer
        Dim z As Byte, Valeur As Byte
        Dim Cible As Variant
     
        '---liste les fichiers du répertoire ---
        Chemin = "C:\Documents and Settings\dossier"
        Fichier = Dir(Chemin & "\*.*")
     
        'Boucle sur les fichiers
        Do
            m = m + 1
            ReDim Preserve Tableau(2, m)
            'Récupère le nom du fichier
            Tableau(1, m) = Fichier
            'Récupère la date de création ou de dernière modification
            Tableau(2, m) = FileDateTime(Chemin & "\" & Fichier)
     
            Fichier = Dir
        Loop Until Fichier = ""
     
     
        '---Trie les fichiers par ordre décroissant de date ---
        Do
            Valeur = 0
            For i = 1 To m - 1
                If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
                    For z = 1 To 2
                        Cible = Tableau(z, i)
                        Tableau(z, i) = Tableau(z, i + 1)
                        Tableau(z, i + 1) = Cible
                    Next z
     
                    Valeur = 1
                End If
            Next i
        Loop While Valeur = 1
     
        'Résultat
        MsgBox Tableau(1, 1) & vbCrLf & Tableau(2, 1)
    End Sub


    michel

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2006
    Messages : 94
    Par défaut
    merci Michel, mais comment faire pour récupérer la valeur du tableau pour la comparer avec la date du jour ?
    j'essaie ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Tableau(2, 1) = Date Then
    MsgBox "c'est tout bon"
    End If
    mais ca fonctionne pas !
    j'ai pas de message qui s'affiche !

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

Discussions similaires

  1. Vérifier date d'un fichier avant la modification
    Par Chris-it dans le forum VBScript
    Réponses: 3
    Dernier message: 12/01/2015, 17h32
  2. Vérifier la date de plusieurs fichiers dans un dossier
    Par makiavel7 dans le forum VBScript
    Réponses: 7
    Dernier message: 07/02/2013, 15h37
  3. Réponses: 4
    Dernier message: 24/08/2004, 13h54
  4. [Layout-Date] Configuration par fichier
    Par Koko22 dans le forum Struts 1
    Réponses: 4
    Dernier message: 28/07/2004, 09h39
  5. [ICS FtpClient] Date modif de fichier et listage de dossier
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 13/06/2004, 19h54

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