Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2011, 13h16   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
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.
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 13h50   #2
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

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

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
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
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h52   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
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 :
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 :
1
2
    'Copie le fichier
    filecopy "H:\test\test2.xls", "C:\test\test2.xls"
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 14h57   #4
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

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

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
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.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 15h03   #5
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
Salut, mon problème c'est que je n'arrive pas à remplacer thisworkbook pour le nom de fichiers que je veux comparer
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 15h16   #6
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

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

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
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.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 15h26   #7
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
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 :
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 !
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 16h16   #8
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
Voici le code au complet :

Code :
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 !
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h26.


 
 
 
 
Partenaires

Hébergement Web