Voici un petit outil que j’ai développé et amélioré au fil du temps pour suivre mon temps de travail, mes heures supplémentaires ainsi que le temps passé sur certains projets.

Il est basé sur excel et utilise des macros uniquement pour préremplir des champs au clic de la souris (si vous ne voulez/pouvez pas activer les macros, en remplissant les champs manuellement le fichier devrait tout de même fonctionner).

Vous trouverez à la fin de cet article le code de l’unique macro du fichier.

Informations importantes

En cliquant sur le lien ci-dessous pour télécharger le fichier zippé, vous risquez d’avoir une alerte comme l’image ci-dessous.

En effet, comme le fichier excel contient une macro pour gérer le click de souris, le navigateur considère ce fichier comme dangereux. Pour passer outre, vous devez aller dans les options et forcer le téléchargement.

Quand vous allez ouvrir, le fichier sur votre ordinateur, vous risquez d’avoir des alertes vous indiquant que Windows a bloqué les macros sur ce fichier. Si vous voulez les activer je vous laisse lire ce tuto :

Une macro potentiellement dangereuse a été bloquée – Support Microsoft

Le fameux fichier à télécharger !

Aide au démarrage

Vous pouvez enregistrer plusieurs tâches à la suite dans la matinée et dans l’après-midi. Leurs temps seront additionnés.
Vous pouvez ajouter un commentaire (ex: le nom du projet sur lequel vous travaillez) dans le champ DESC et utiliser le champ SEG pour segmenter votre analyse par la suite.

Code de la macro Excel

Le code ci-dessous s’exécute uniquement dans l’onglet TimeSheet sur la colone « D ».

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("D:D")) Is Nothing And Target.Cells.Count = 1 Then
        If Not Target.Row = 1 Then
            If Not IsEmpty(Target.Offset(0, -2).Value) And IsEmpty(Target.Offset(0, -1).Value) Then
                Target.Offset(0, -1).Value = Format(Now(), "dd.mm.yyyy hh:mm:ss")
                Target.Offset(0, -1).Value = Now()   
            End If
            If IsEmpty(Target.Offset(0, -2).Value) Then
                Target.Offset(0, 6).Value = Target.Offset(-1, 6).Value + 1
                Target.Offset(0, 0).Formula = "=$C" + CStr(Target.Row) + "-$B" + CStr(Target.Row)
                Target.Offset(0, -2).Value = Format(Now(), "dd.mm.yyyy hh:mm:ss")
                Target.Offset(0, -2).Value = Now()
                Target.Offset(0, 2).Formula = "=WEEKNUM($B" + CStr(Target.Row) + ",21)"
                Target.Offset(0, 3).Formula = "=TEXT($B" + CStr(Target.Row) + ",osday)"
                Target.Offset(0, 1).Value = "TASK"
                Target.Offset(0, 1).Select
            End If
        End If
    End If
End Sub