Mesure de temps

Fermé
GINO83200 - 9 févr. 2015 à 17:45
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 févr. 2015 à 13:08
Bonjour à tous les lecteurs de ce post,

Je souhaiterais pour mon travail, comptabiliser de manière précise le temps passé sur chaque dossier.
Je créer donc plusieurs feuilles excel (sur le même fichier) auquel j'attribue un nom de dossier.

Ma question est la suivante :

Est-il possible de créer un code VBA ou autre qui m'enclencherais un timer à chaque fois que je change de feuille (dossier)

Ex : je Clic sur la première feuille. Là le timer s'enclenche temps que je suis dessus.
Si je clic sur la seconde, le temps comptabilisé sur la première feuille s'arrête et le timer comptabilise le temps passé sur la deuxième, etc... pour avoir à la fin de la journée le temps passé sur chaque dossier (feuille) !!!


Merci d'avance de m'avoir lu !!!

2 réponses

Patty5083 Messages postés 34 Date d'inscription lundi 14 avril 2014 Statut Membre Dernière intervention 10 novembre 2019
9 févr. 2015 à 19:40
Bonsoir

Voir peut-être ce lien avec la méthode OnTime

http://www.mdf-xlpages.com/modules/publisher/item.php?itemid=14

Bon courage
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
Modifié par pijaku le 10/02/2015 à 13:08
Salut,

Bonjour Patty,

A mon sens, utiliser Application.OnTime risque de compliquer le code.

Regarde ce code, à placer dans le module ThisWorkbook :

Option Base 1
'variables au niveau du Module
Dim OldSheet As Integer
Dim Tps() As Double
Dim Temp As Double

'lancement du bouzin
Private Sub Workbook_Open()
ReDim Preserve Tps(ThisWorkbook.Sheets.Count)
Temp = Timer
OldSheet = ActiveSheet.Index
End Sub

'relance le chrono et stocke les temps intermédiaires
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Temp = Timer - Temp
Tps(OldSheet) = Tps(OldSheet) + Temp
OldSheet = ActiveSheet.Index
Temp = Timer
End Sub

'stop final et restitution
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
Temp = Timer - Temp
Tps(OldSheet) = Tps(OldSheet) + Temp
For i = 1 To UBound(Tps)
    MsgBox "Feuille " & Sheets(i).Name & " : " & Tps(i) & " secondes."
Next i
End Sub


🎼 Cordialement,
Franck 🎶
0