Afficher la date et l'heure de mise à jour
Bonjour,
Je souhaiterais votre aide (sans VBA - car mon fichier est en partage). Voila j'ai une base de données BDD dans l'onglet [feuille 2] qui va de colonne A à colonne BP. Dans notre activité, cette BDD doit être souvent mise à jour pour la pro-activité.
Si quelqu'un a fait une mise à jour ( c'est à dire n'importe quelle cellule a changé à la précédente) je souhaiterais savoir la date et l'heure de mise à jour.
Ceci en utilisant une formule comme =SI(feuille2! A:BP<>MAINTENANT...
Merci de votre aide
Michel
Bonjour,
Sans VBA ça va pas être facile car comment veux-tu figer la date et l'heure de façon automatique alors que la fonction MAINTENANT() te retournera toujours la date et l'heure au moment du re calcul ?
Bonjour,
en effet, ton problème est presque impossible à résoudre sans vba.
Cependant, il te reste une dernière solution, logiquement, dans tes dossiers, il y a une colonne "Modifié le" en face de chaque fichier qui indique la dernière date et heure de modification de n'importe quel utilisateur.
A plus !
Bonsoir,
Merci de votre disponibilité. Je prends alors votre solution si c'est une solution VBA dont on peut partager le fichier Excel après : L' emplacement de la date et l'heure de mise à jour de la base de données est à mettre dans l'onglet [feuille1] cellule B2.
Merci d' avance pour cette formule.
Michel
Bonjour,
Donc, tu colles ce code dans le module du classeur (ThisWorkbook). Si une modif a été faite et qu'un enregistrement est fait, la date et l'heure sera inscrite en "A1" de la feuille "Feuil1", à adapter :
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Worksheets("Feuil1").Range("A1").Value = Now
End SubBonjour,
Merci d' avoir répondu. Le fait de faire un coup de disquette (sauvegarde) pour mettre à jour la date et l'heure n'est pas une bonne idée quand on travaille en partage. Ça actualise juste les infos mais si la base de données (feuille 2) n'a pas été mis à jour, ça fausse complètement le tableau de bord en feuille 1.
Une autre solution svp.
Michel
Bonjour,
Dans ce cas, on va procéder autrement. On va créer un nom invisible depuis la boite "Gestionnaire de noms" afin de stocker la date et l'heure et tu pourras utiliser une sub pour pouvoir lire sa valeur. A mettre dans le module de la feuille "Feuil2" si c'est celle que tu veux surveiller. La proc "LireNom" te permet de lire la valeur si le nom existe. Attention tout de même, si dans une cellule tu entre en mode édition mais que tu n'effectue aucun changement, ça sera malgré tout pris en compte sinon, il faudra récupérer la valeur précédente dans une variable niveau module sur l'évènement "SelectionChange" et la comparer avec l'actuelle pour voir si c'est la même et agir en conséquence. Pour lire la valeur du nom, tu peux soit poser le curseur dans la proc et F5 soit mettre un bouton dans la feuille ou dans la barre d'accès rapide dans ces deux cas, le code doit être mis dans un module standard (il est possible de lire la valeur le classeur fermé par contre, je ne sait pas si ça fonctionne sur un classeur en réseau ?) :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nom As Name
'évite l'erreur du nom qui n'existe pas
On Error Resume Next
Set Nom = ThisWorkbook.Names("Modifier")
'si c'est le cas, création du nom en invisible avec la date et l'heure du moment
If Err.Number <> 0 Then
ThisWorkbook.Names.Add "Modifier", Date & "_" & Time, False
Else
Nom.Value = Date & "_" & Time
End If
End Sub
Sub LireNom()
Dim Nom As Name
On Error Resume Next
Set Nom = ThisWorkbook.Names("Modifier")
'si c'est le cas, création du nom en invisible avec la date et l'heure du moment
If Err.Number = 0 Then
'si il existe, indique la date et l'heure de la dernière modif
MsgBox "La dernière modification à eue lieu le : " & _
Split(Right(Nom, Len(Nom) - 1), "_")(0) & " à " & Split(Nom, "_")(1)
Else
MsgBox "Désolé, le nom n'a pas encore été créé !"
End If
End SubRe,
petite précision, en fait ça ouvre le classeur si il est fermé pour lire la valeur du nom !