La solution suivante enregistrera en arrière-plan le temps que vous travaillez sur un classeur. Pour ce faire, utilisez l’événement Workbook_Open pour arrêter l’heure de début. La fin du traitement est atteinte lorsque vous fermez à nouveau le fichier. Dans ce cas, profitez de l’événement Workbook_BeforeSave.
Dim LeTemps As Date Private Sub Workbook_Open() LeTemps = Format(Now, "dd.mm.yy h:mm:ss") Sheets("tempstotal").Range("A2").Value = LeTemps End Sub
Dès que vous quittez le classeur, affichez la feuille de calcul tempstotal masquée, écrivez les entrées dans le tableau, puis masquez à nouveau le tableau. Vous ne remarquerez rien de toute l’action.
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim finTemps As Date Dim DiffTemps As Date finTemps = Format(Now, "dd.mm.yy h:mm:ss") DiffTemps = (finTemps - LeTemps) Application.ScreenUpdating = False AfficherLaFeuille Sheets("tempstotal").Select Range("B2").Value = finTemps Range("C2").Value = Format(DiffTemps, "h:mm:ss") Range("A2").Select Selection.EntireRow.Insert MasquerLaFeuille Application.ScreenUpdating = True End Sub
Les deux macros AfficherLaFeuille et MasquerLaFeuille sont stockées sous un module normal.