Message d'alerte en fonction de la date d'enregistrement d'un fichier

osiris150

XLDnaute Occasionnel
Bonjour à tous,

Je suis confronté à un problème que je n'ai pas réussi à résoudre en faisant des recherches.
Voilà je souhaiterais savoir s'il est possible d'avoir un message d'alerte qui s'affiche pour dire qu'un fichier a déjà été enregistré à la date du jour.

Exemple : J'ai un fichier daté du 15/01/2012 sur lequel je n'ai pas travaillé. Lorsque je l'ouvre, je fais des modifications, je sauvegarde, du coup le fichier à une date de modification à la date d'aujourd'hui. Maintenant, imaginons qu'un autre utilisateur ouvre ce même fichier plus tard dans la journée, je voudrais que celui-ci ait un message d'alerte au moment ou il va sauvegarder en disant que le fichier a déjà été modifié ce jour.

Je n'ai pas mis de fichier exemple car je ne sais pas si cela est vraiment utile. Mais s'il le faut je veux bien en mettre un.

Je vous remercie d'avance pour votre aide.
Cordialement
Nicolas
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

Bonsoir osiris150,

Placer cette macro dans ThisWorkbook (Alt+F11 et double-clic en haut à gauche) :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If Int(FileDateTime(ThisWorkbook.Path & "\" & ThisWorkbook.Name)) = Date Then
  If MsgBox("Le fichier a été modifié ce jour." & vbLf & _
    "Voulez-vous poursuivre l'enregistrement ?", 4) = 7 Then
    Cancel = True 'annule l'enregistrement
    'suite éventuelle du code
  End If
End If
End Sub
A+
 

osiris150

XLDnaute Occasionnel
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

Bonjour Job75,

Ta macro fonctionne parfaitement. Par contre je me rend compte qu'à partir du moment où l'on ouvre un fichier excel, même si on ne l'a pas sauvegardé, celui change de date de modification. Du coup ton message s'affiche même s'il n'y a pas eu de première sauvegarde.
En fait la solution serait sans doute de contrôler si il y a eu une sauvegarde de faite précédemment à la date du jour.
Penses-tu pouvoir modifier ta macro ?
En tous cas merci d'avance pour ton aide.
Cordialement
Nicolas
 

Philippe68

XLDnaute Occasionnel
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

Bonjour,

pas fait de test puisque pas de fichier
à essayer :

Code:
Sub DateSave ()
Dim Cible As Object, Valeur As Object
Dim Resultat As String, Fichier As String

Fichier = "C:\tonfichier.xls" 'adapter le chemin
Set Cible = CreateObject("Scripting.fileSystemObject")
Set Valeur = Cible.getFile(Fichier)

Resultat = "Chemin : " & Valeur.parentFolder & Chr(10) & Chr(10) & _
"Nom et chemin fichier : " & Fichier & Chr(10) & Chr(10) & _
"Date creation : " & Valeur.dateCreated & Chr(10) & Chr(10) & _
"Dernière modification : " & Valeur.dateLastModified & Chr(10) & Chr(10) & _
"Taille classeur : " & Valeur.Size & " octets"

MsgBox Resultat
End Sub
 

osiris150

XLDnaute Occasionnel
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

Bonjour Philippe68,

Et merci de m'aider :D
Je ne sais pas comment utiliser ton code.
Je dois le placer où exactement ?
En fait si je comprends bien cela fait apparaître un message à l'écran avec les infos sur les dernières modifications du fichier.
Mais ce n'est pas tout à fait ce que je recherchais.
Il faudrait juste un contrôle (message d'alerte) pour dire si le fichier sur lequel on travaille donc le fichier ouvert a déjà été sauvegardé ou pas à la date du jour. Mais le souci c'est que lorsqu'un fichier est ouvert sur Excel la date de modification change aussi même si le fichier n'a pas été sauvegardé.
Exemple :
Si un fichier enregistré le 1/02/2012 est ouvert (sans sauvegarder) aujourd'hui par exemple sa date de modification passe au 02/02/2012. Si on ressort sans sauvegarder la date du fichier reprend celle d'hier.
Par contre si on sauvegarde la date change définitivement à la date du jour.
Donc le code de Job75 serait presque bon sauf que du fait du problème énoncé ci-dessus le message d'alerte s'affiche tout le temps.

Désolé si je ne suis pas très clair.
Merci pour votre aide
Nicolas
 

job75

XLDnaute Barbatruc
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

Bonjour osiris150, Philippe,

J'avais mal testé, utilisez cette macro :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If Int(ActiveWorkbook.BuiltinDocumentProperties("Last save time")) = Date Then
  If MsgBox("Le fichier a été modifié ce jour." & vbLf & _
    "Voulez-vous poursuivre l'enregistrement ?", 4) = 7 Then
    Cancel = True 'annule l'enregistrement
    'suite éventuelle du code
  End If
End If
End Sub
Testez bien sûr en modifiant la date système de l'ordi.

A+
 

Philippe68

XLDnaute Occasionnel
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

Re,

mais ce code ne dit pas si le fichier a déjà été sauvegardé à la date du jour ou pas en l'ouvrant.
de mon coté le msgbox s'affiche avant de quitter que si le fichier a été modifié.
ou alors j'ai loupé un épisode.

Edit : Salut job, je ne critique pas ton code, mais j'ai pas tout compris :(
 

osiris150

XLDnaute Occasionnel
Re : Message d'alerte en fonction de la date d'enregistrement d'un fichier

effectivement ce n'est pas à l'ouverture que le message s'affiche mais juste lorsqu'on veut sauvegarder. Pour ma part c'est ce que je souhaitais car concrètement j'utilise dans mon travail des fichiers communs avec d'autres utilisateurs et je voulais un contrôle afin de savoir si quelqu'un avait déjà mis à jour un fichier ou pas de manière à éviter d'écraser le fichier d'un autre.
 

Discussions similaires

Statistiques des forums

Discussions
314 662
Messages
2 111 641
Membres
111 243
dernier inscrit
flo-99010