Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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.
 

Zorgloub

XLDnaute Junior
 

Zorgloub

XLDnaute Junior
?? 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:

Zorgloub

XLDnaute Junior
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

  • Test Fonction LastDate.xlsm
    17 KB · Affichages: 1

Dranreb

XLDnaute Barbatruc
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
 

Zorgloub

XLDnaute Junior
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
 

Dranreb

XLDnaute Barbatruc
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.
 

job75

XLDnaute Barbatruc
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+
 

Zorgloub

XLDnaute Junior
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.
 

Zorgloub

XLDnaute Junior
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…