Mettre une macro qui me donne l'heure du dernier enregistrement sur une seule feuille

Brice14170

XLDnaute Nouveau
Bonjour a tous,

Et tout d'abord merci pour toutes vos réponses et vos aides, j'ai construit un fichier excel assez cool en suivant vos diverses réponses donc déja merci beaucoup !

Ce qui m'amène vers vous aujourd'hui c'est un problème que je n'arrive pas a résoudre depuis maintenant de longs jours.

J'ai rentré une macro ( je ne suis absolument pas familier avec les macros) pour connaitre la date du dernier enregistrement. ( qui marche super bien) que j'ai placé dans ThisWorkBook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("jour") = Now
ActiveWorkbook.Save
End Sub


Cependant, j'aimerais pouvoir l'appliquer a seulement une feuille et je n'arrive absolument pas a le faire. ( que je place dans Feuil1(Feuil2) )

J'ai tenté ça, sans réussite.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Private Sub Worksheet_BeforeClose(Cancel As Boolean)
Range("jour") = Now
ActiveWorksheet.Save
End Sub

Merci d'avance pour votre précieux aide

@++, Brice
 

sousou

XLDnaute Barbatruc
Bonjour
Tu ne peux pas sauver une feuille si ce n'est en enregistrement uniquement cette feuille, tu est bien obligé de sauvegarder l'ensemble du classeur.
La solution pourrait être de suavgarder le fichier à chaque fois que la feuille change quelque chose comme c que tu as fait.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("jour") = Now
ActiveWorkbook.Save savechanges:=true
End Sub
A chaque modif le ficher est sauvegarder
 

Brice14170

XLDnaute Nouveau
Bonjour sousou,

Je suis d'accord avec toi, mais j'aimerais voir si y'a un moyen d'afficher le dernier enregistrement, feuille par feuille, car c'est voué a être un fichier collaboratif.

J'ai donc supprimé la macro dans le ThisWorkBook et reporté celle ci dans la feuille1(Feuille2)

Malheureusement ça ne marche pas,
 

Brice14170

XLDnaute Nouveau
Salut avous,

@sousou : Je n'ai pas bien compris, l'idée était de voir la date d'enregistrement de la feuille quand on consulte celle ci afin de voir facilement de quand date les infos,

@lafifine : Je ne trouve pas la date d'enregistrement dans ton fichier, juste quand on modifie une cellule. Malheureusement ça ne s'applique pas a ce que j'aimerais faire, j'aimerais que si on enregistre la feuille, on voit dans une case ( B5 par exemple ) le moment ou l'action a été faite.

Merci de votre aide
 

sousou

XLDnaute Barbatruc
Bonjour
Voilà un exemple, ci la date et l'huere de la dernière modif est affichée sur la feuille, on pourrait tout aussi bien la mémorisée sur une feuille à part, et pourquoi pas edité un fichier txt (log) qui mémoriseraient toutes les actions....
 

Pièces jointes

  • mesmodifs.xlsm
    16.3 KB · Affichages: 8

Modeste geedee

XLDnaute Barbatruc
Bonsour®
J'ai rentré une macro ( je ne suis absolument pas familier avec les macros) pour connaitre la date du dernier enregistrement.
Cependant, j'aimerais pouvoir l'appliquer a seulement une feuille et je n'arrive absolument pas a le faire. ( que je place dans Feuil1(Feuil2) )
le dernier enregistrement concerne le classeur entier !!!
quelle que soit la feuille ayant été accédée ou modifiée

utiliser les propriétes interne du document comme ceci :
VB:
Sub infos()
With ActiveWorkbook.BuiltinDocumentProperties
MsgBox .Item(3).Name & " : " & .Item(3).Value _
& Chr(10) & .Item(7).Name & " : " & .Item(7).Value _
& Chr(10) & .Item(11).Name & " : " & .Item(11).Value _
& Chr(10) & .Item(12).Name & " : " & .Item(12).Value
End With
End Sub
1025811

ci dessous liste de toutes les propriétes internes d'un document :
VB:
Sub lISTE_propriétés()
On Error Resume Next

rw = 1
Worksheets.add
For Each p In ActiveWorkbook.BuiltinDocumentProperties
    Cells(rw, 1).Value = rw
    Cells(rw, 2).Value = p.Name
    Cells(rw, 3).Value = p.Value
    rw = rw + 1
Next
End Sub
 

Brice14170

XLDnaute Nouveau
C'est exactement ce que je veux faire sousou !

J'ai appliqué ta formule comme cela :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.EnableEvents = False
Sh.Range("jour") = FormatDateTime(Date, 2)
Sh.Range("jour") = FormatDateTime(Time, 4)
ThisWorkbook.Save
Application.EnableEvents = True
End Sub
Sub coucou()
Application.EnableEvents = True
End Sub


Cependant quand j'essaye a écrire sur une autre feuille ce message d'erreur apparait.


1025813


@Modeste j'ai pas compris grand chose, mais je vais tenter de bidouiller !

Dois-je continuer a mettre lesmacro dans le workbook ?

Sub infos()
With ActiveWorkbook.BuiltinDocumentProperties
MsgBox .Item(3).Name & " Feuil2" & .Item(3).Value _
& Chr(10) & .Item(7).Name & "Feuil3" & .Item(7).Value _
& Chr(10) & .Item(11).Name & " : " & .Item(11).Value _
& Chr(10) & .Item(12).Name & " : " & .Item(12).Value
End With
End Sub

Et je dois remplir le nom des feuilles comme ceci ?

Merci de votre aide !


Merci !
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander