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 :

Comparez la date de deux fichiers excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut Comparez la date de deux fichiers excel
    Bonjour, j'aimerai savoir comment comparer la date de modification de deux fichiers excel (c'est le même fichier, un sur réseau et l'autre sur c:\) et qu'à la suite le fichier plus récent (normalement celui qui a été déposé sur le réseau) remplace le fichier "plus ancien". Merci de vos lumières.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut copier classeur
    Bonjour Pimpampoum, Bonjour le Forum,

    La FAQ pourrait te donner la réponse.

    Propriétés Classeur

    Copier classeur

    Il te faudrait alors tester la propriété

    de chacun des classeurs

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    J'ai coché dans les références Microsoft Scripting Runtime.

    Avec ce code je récupère bien la date de modification du fichier (l'info que je voulais) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'Récupère la dernière date de modification
        MsgBox ThisWorkbook.BuiltinDocumentProperties("Last Save Time").Value
    Et avec ce ligne de code j'arrive à copier le fichier source à destination:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'Copie le fichier
        filecopy "H:\test\test2.xls", "C:\test\test2.xls"

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut copie classeurs
    Salut Pimpampoum,

    Oui, et alors? Cela répond-il à ta question?

    Tu voulais tester la date de chacun des classeurs et mettre à jour le plus ancien.

    Fais part de ton développement et positionne la discussion en "Résolu" si c'est le cas. Sinon, reviens en précisant la difficulté éventuelle.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    Salut, mon problème c'est que je n'arrive pas à remplacer thisworkbook pour le nom de fichiers que je veux comparer

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Pimpampoum,

    Une solution, basique j'en conviens, est d'ouvrir les classeurs l'un après l'autre en récupérant leur propriété "last save time" appliqué à l'objet "ActiveWorkbook".

    En second lieu, il te faudrait conditionner le sens de la copie (classeur1 vers classeur2 ou l'inverse) à la comparaison de ces 2 dates.

    2 remarques :
    - la propriété "last save time" est au format date (c'est logique mais l'on ne perd rien à le souligner)
    - la copie d'un classeur vers l'autre par la méthode "FileCopy" n'entraîne pas de message d'alerte du type "Le fichier existe déjà. Voulez-vous le remplacer?"

    Avec ces indications, je pense, tu peux développer le code adéquat.
    Sinon, reviens.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    Salut MarcelG,

    Merci des conseils. Le fichier sur réseau sera copié sur C:\ uniquement si il est plus récent. Le but est de mettre à jour ce fichier après modification sans devoir "se déplacer" poste par poste. Je ne veux pas que l'utilisateur sache que le fichier est remplacé, ça doit être transparent pour lui. Je pense que je veux suivre ta logique d’ouvrir un fichier et après l'autre pour pouvoir ensuite comparer les dates. Dès que ça marche je clôture ou je reviens vers vous. Encore merci.

    Avec le code ci-dessous j'obtiens la même date et la même heure, alors que les deux fichiers ont bien la même date mais une heure différente. Voici le 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
    Sub CopierFichier()
        Dim fichierC As String
        Dim fichierH As String
     
        Dim dateC As Date
        Dim dateH As Date
     
        fichierC = "C:\test2.xls"
        fichierH = "H:\test2.xls"
     
        Application.ScreenUpdating = False
        Workbooks.Open Filename:=fichierC
        dateC = ThisWorkbook.BuiltinDocumentProperties("Last Save Time").Value
        MsgBox dateC 'test de contrôle
        Workbooks("test2.xls").Close SaveChanges:=False
     
        Application.ScreenUpdating = False
        Workbooks.Open Filename:=fichierH
        dateH = ThisWorkbook.BuiltinDocumentProperties("Last Save Time").Value
        MsgBox dateH 'test de contrôle
        Workbooks("test2.xls").Close SaveChanges:=False
    End Sub

    Qu'est-ce que j'ai oublié ? Merci de votre aide.

    Merci MarcelG,

    J'avais lu trop vite ta reponse. Le code marche à merveille si je remplace Thisworkbook par Activeworkbook (comme tu m'avais indiqué). Merci encore, dès que le code est fini je le poste en entier pour les autres et je clôture la discussion. Merci encore, t'es un pro !

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2011
    Messages : 30
    Par défaut
    Voici le code au complet :

    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
    Sub CopierFichier()
        Dim fichierC As String
        Dim fichierH As String
     
        Dim dateC As Date
        Dim dateH As Date
     
        fichierC = "C:\test2.xls"
        fichierH = "H:\test2.xls"
     
        'Recupère dernière modif sur C
        Application.ScreenUpdating = False
        Workbooks.Open Filename:=fichierC
        dateC = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time").Value
        Workbooks("test2.xls").Close SaveChanges:=False
     
        'Recupère dernière modif sur H
        Application.ScreenUpdating = False
        Workbooks.Open Filename:=fichierH
        dateH = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time").Value
        Workbooks("test2.xls").Close SaveChanges:=False
     
        'Compare les deux dates
        If dateC < dateH Then
            'Copie le fichier plus recent sur C
            filecopy "H:\test2.xls", "C:\test2.xls"
        End If
     
        'Maintenant ouvre la dernière version du fichier mis à jour
        Workbooks.Open Filename:=fichierC
     
        'Ferme le lanceur
        Workbooks("Lanceur.xls").Close SaveChanges:=False
    End Sub

    Merci infiniment MarcelG !

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

Discussions similaires

  1. fusion de deux fichiers EXCEL dans un 3ième
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2007, 18h59
  2. Réponses: 4
    Dernier message: 30/05/2007, 16h24
  3. [VBA-E] Transfert D'images Entre Deux Fichiers Excel
    Par Kevin_18 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/04/2007, 14h43
  4. Comparaison de deux fichiers EXCEL
    Par meufeu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2006, 22h56
  5. [VB]Problème ouverture de deux fichier excel
    Par Yanmeunier dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/02/2006, 15h51

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