XL 2010 Empêcher la demande de sauvegarde pour un fichier non modifié utilisant un Complément Xlam

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Zorgloub

XLDnaute Junior
Bonjour à la Communauté,

Voilà, j'ai créé un petit fichier Xlam pour afficher la date de dernière sauvegarde, dont voici le simple code:

Function LastSaved() As Date
LastSaved = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time")
End Function

J'ai coché l'activation de ce "Complément" dans l'onglet Développeur.
La réponse est bien correcte lorsque je tape, dans une cellule, la fonction suivante: =LastSaved().

Xlam parceque je ne désire pas sauver ce fichier "mode Macro" et donc conserver un format xlsx.

1) Le problème qui me gêne est qu'à la fermeture du fichier, Excel me demande si je veux sauver le fichier même si je n'y ai apporté aucune modification !

Je voudrais éviter cette question inutile (puisque pas de modification apportée) pour éviter de fausser la date réelle de dernière sauvegarde.. notamment si par mégarde je répondais Oui !

La désactivation des calculs automatiques ou des liaisons vers d'autres documents ne solutionne pas ce "problème".

2) Accessoirement, que faudrait-il ajouter à ce code pour formater directement la cellule en Format DATE ?

Si vous avez une solution... je suis preneur et je vous en remercie déjà 😉

Merci.
 
Mais pourquoi vouloir écrire dans ThisWorkbook ?

Complétez plutôt la fonction :
VB:
Function LastDate() As String    'La cellule se formate automatiquement en Date/heure
    Application.Volatile
    LastDate = Format(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time"), "dd/mm/yyyy hh:mm:ss")
    ActiveWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
End Function
 
?? la question reste ouverte 😉 Le code dans This Workbook empêchait cet inconvénient... d'où ma demande de savoir si cette fonction pourrait appeler une macro qui écrirait le code dans ThisWorkbook...
Et si oui... comment ...
Appel aux spécialistes .
Merci déjà.
 
Dernière édition:
Je pense que vous n'avez pas vu mon post #45.
Oui, c'est bien le code de ton Post #45 que j'ai essayé.
Dans le module de mon fichier ou dans mon Perso.xlam: Excel ferme effectivement sans message MAIS ... n'enregistre pas les modifications 🙁((
Et la finalité étant de mettre cette fonction autonome dans un fichier PERSO.xlam pour être utilisée dans tous les fichiers ultérieurs.
 

Pièces jointes

Bonjour.
Je l'écrirais plutôt comme ça, votre fonction :
VB:
Function LastDate() As String    'La cellule se formate automatiquement en Date/heure
    Application.Volatile
    LastDate = Format(Application.Caller.Worksheet.Parent.BuiltinDocumentProperties("Last Save Time"), "dd/mm/yyyy hh:mm:ss")
    ' ActiveWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
   End Function
 
Bonjour.
Je l'écrirais plutôt comme ça, votre fonction :
VB:
Function LastDate() As String    'La cellule se formate automatiquement en Date/heure
    Application.Volatile
    LastDate = Format(Application.Caller.Worksheet.Parent.BuiltinDocumentProperties("Last Save Time"), "dd/mm/yyyy hh:mm:ss")
    ' ActiveWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
   End Function
Hi Dranreb. Merci mais... c'est encore pire !
Même si tu ne fais pas de modification, Excel demande si on veut enregistrer en fermant 🙁
 
Je pense que ce n'est pas lié à ce dispositif.
J'ai aussi eu des classeurs où cette demande était faite sans que je puisse déterminer qu'est-ce que j'avais bien pu modifier. Il est possible de mettre à True sa propriété Saved lors de son ouverture si c'est pendant cette phase qu'elle a lieu. Parfois une sélection de cellule suffit pour qu'il estime que l'état du classeur a changé …
En revanche avec ma proposition la valeur de la cellule ne changera plus sans qu'on puisse le voir lorsqu'on activera un autre classeur ouvert.
 
Bonjour le forum,

Voici une solution qui nécessite qu'un seul fichier (autre que .PERSO.xlam) soit ouvert :
VB:
Function LastDate() As String    'La cellule se formate automatiquement en Date/heure
    Application.Volatile
    Static n 'mémorise la variable
    LastDate = Format(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time"), "dd/mm/yyyy hh:mm:ss")
    n = n + 1
    If n = 1 Then ActiveWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
End Function
A+
 
Bonjour le forum,

Voici une solution qui nécessite qu'un seul fichier (autre que .PERSO.xlam) soit ouvert :
VB:
Function LastDate() As String    'La cellule se formate automatiquement en Date/heure
    Application.Volatile
    Static n 'mémorise la variable
    LastDate = Format(ActiveWorkbook.BuiltinDocumentProperties("Last Save Time"), "dd/mm/yyyy hh:mm:ss")
    n = n + 1
    If n = 1 Then ActiveWorkbook.Saved = True 'évite l'invite à la fermeture si aucune modification
End Function
A+
Hi Job75.
Parfait ca ! Merci.
En effet, ca fonctionne correctement si cette fonction est placée dans le Module du fichier.
(Ne fonctionne pas si placée dans le module de Perso.xlam)
Tiens à quoi correspond la variable "static n" dont je ne vois pas la définition ?
Je ne comprends pas cette ligne qui résoud ici le problème.
 
Hi Job75. Si je mets ton dernier code uniquement dans mon perso.xlam, la date apparaît bien dans la cellule où je place cette fonction... Malheureusement, la demande d'enregistrement apparait toujours même s'il n'y a pas eu de modifications dans le fichier 🙁
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour