Tom's Guide > Forum > Programmation > VBA Excel Mise à jour de date de dernière modification

VBA Excel Mise à jour de date de dernière modification

Forum Programmation : VBA Excel Mise à jour de date de dernière modification

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Salut,

J'ai une feuille Excel avec des données et dans une case se trouve la date de mise à jour de la dite feuille.
Ce que je voudrais obtenir en VBA c'est une mise à jour de cette date si on quitte la feuille après l'avoir modifiée.
Si on ferme le classeur sans rien avoir modifié dans la feuille, alors la date de mise à jour ne doit pas être modifiée.
Comment faire?

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Hello,
En VBA, on peut récupérer la date du dernier enregistrement du classeur :

Code :
  1. Function DateModif() as Date
  2. DateModif = ActiveWorkbook.BuiltinDocumentProperties("Last save time" )
  3. End Function

------------------------------ Quand on lui marche sur les pieds, le serpent hausse les épaules.
Répondre à DrSnake

Oui merci pour l'info mais ça ne solutionne pas mon problème. En effet mon code modifie la feuille et l'enregistre immédiatement à l'ouverture. Puis l'utilisateur a le choix de modifier ou non la feuille avant de la refermer. Mais c'est au moment de la fermeture que mon code devrait reprendre la main et changer la date qui se trouve dans dans une cellule si et seulement si une modification a été apportée par l'utilisateur.

Répondre à marc1024

Ok, je crois comprendre.
A ma connaissance, il n'y a pas de propriété intégrée qui détecte une modification par l'utilisateur.
Il faut donc le gérer. Pour cela, il y a du code à mettre derrière la (les) feuille(s) sur laquelle on veut détecter la modif (editeur VBA, clic droit sur la feuille, code...)

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. gIsModified = True
  3. End Sub


Dans un module VBA :

Code :
  1. Global gIsModified As Boolean  ' Variable globale qui contiendra vrai en cas de modification
  2. Function GetDateModif() As Date
  3. GetDateModif = ActiveWorkbook.BuiltinDocumentProperties("Last save time" )
  4. End Function
  5. Sub auto_close()  ' fonction appelée automatique lors de la fermeture du classeur
  6. If gIsModified Then
  7.     Range("feuil1!a1" ) = GetDateModif()
  8. End If
  9. End Sub
  10. Sub auto_open() ' fonction appelée lors de l'ouverture du classeur
  11. gIsModified = False  ' init. var. globale
  12. End Sub



Petite remarque d'ordre général à tout les concepteurs de macros et autres adeptes du VBA :
Ayant moi même régulièrement à maintenir de nombreuses soi-disant applications EXCEL, je pense qu'il faut éviter de développer des usines à gaz sous EXCEL (ou Word mais qui remporte, curieusement moins de succès) même si techniquement c'est possible.
Au delà du service immédiat que va rendre la petite appli, il faut essayer de voir plus loin et penser à la pérennité du truc (et surtout au pauvre programmeur qui va devoir reprendre un jour l'appli pour la maintenir ou la faire évoluer, si vous faites ça dans un milieu professionnel) et aussi aux limites inhérentes à EXCEL.
Je me souviens d'un utilisateur qui m'avait appelé au secours pour son appli qui ne fonctionnait plus : il avait atteint la limite maudite des 65536 lignes et forcément on ne pouvait plus rajouter d'enregistrement ... pardon, de ligne. Et dans ce cas, là, c'est pas facile à expliquer à l'utilisateur désespéré qu'on ne va pas pouvoir lui développer un truc pour remplacer ça en 1 heure.... :non:

Enfin, je dis ça, je dis rien, hein .... :D



Message édité par DrSnake le 12-03-2009 à 22:32:42
------------------------------ Quand on lui marche sur les pieds, le serpent hausse les épaules.
Répondre à DrSnake

Un tout grand merci pour ton aide DrSnake. Ca marche du tonnerre. Moi j'avais essayé avec la propriété saved mais sans succès. Je vais incorporer ça dans mon programme VBA. Ma prochaine étape serais d'essayer de faire aussi une automatisation de la date de mise à jour d'un document Word. mais ça c'est tout une autre histoire d'autant que je n'ai jamais écrit une ligne de VBA dans Word!!!

Répondre à marc1024
Tom's Guide > Forum > Programmation > VBA Excel Mise à jour de date de dernière modification
Aller à :

Il y a 2666 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens