[Excel] Time Tracker Projets : Un timer par tâche

Bonjour,

Je suis entrain d'éditer (enfin plutôt d'essayer d'éditer) un fichier Excel "Time Tracker" afin de pouvoir comptabiliser le temps total passé sur un projet.

L'idée est d'avoir un fichier par projet dans lequel je commence par indiquer le temps de travail estimé.
Ensuite, je précise chaque tâche d'exécution et pour chacune d'elle j'aurai la possibilité de lancer un timer dès que je travaille dessus. A la fin, je stoppe le timer.
Ainsi de suite pour les autres tâches éventuelles.
Mais aussi, j'aurai la possibilité de reprendre une tâche déjà démarré.

A la fin du projet, la somme des temps passés sur toutes les tâches d'exé. me donnera le temps total passé sur le projet. Et je pourrais comparer avec l'estimation faite au départ.

N'y connaissant rien en code ou en VBA, j'ai commencé à éditer mon fichier en m'appuyant sur cet article pour avoir un code VBA pour le timer :
https://fr.extendoffice.com/documents/excel/3684-excel-create-stopwatch.html
J'ai pu réaliser ainsi un timer pour la 1ère tâche d'un projet.

Sans réellement comprendre le code, j'ai tout de même réussi à intégrer un 2nd timer (pour la 2e tâche donc) indépendant du premier.

Dans cette logique, je peux en réaliser autant que je le souhaite. Pas de problème.

Par contre, j'ai deux problèmes que je ne comprends pas et que je n'arrive pas à résoudre :
#1/ Je lance le timer en cliquant sur "Démarrer", je laisse s'écouler quelques secondes. Si je reclique sur "Démarrer", le timer revient à zéro. Alors que pour ça, il y a le bouton "Réinitialiser".
Si je lance le timer, je laisse quelques secondes, j'appuie sur "Arrêter", le timer s'arrête. Si je rappuie sur "Démarrer", le timer repart normalement. Par contre, si je rappuie sur "Démarrer", le timer va reviennir au temps qu'il était la dernière fois que j'ai cliqué sur "Arrêter".

#2/ Je lance le timer, j'attends, je clique sur "Arrêter" et j'enregistre le fichier avant de le fermer. J'ouvre de nouveau le fichier, je clique sur "Démarrer" pour relancer le timer et celui-ci repart depuis zéro au lieu de reprendre sur le temps déjà écoulé.

Je vous laisse l'ébauche sur laquelle je travaille : https://www.cjoint.com/c/KKpkjANkffr

Certaines cellules ne sont pas à jour (comme certaines formules de %, etc...) car pour l'instant c'est secondaire et elles sont là pour la mise en page.
Par la suite, j'aurai d'autres questions justement à ce sujet et sur certaines mises en forme de cellules je pense.

J'espère avoir été suffisamment explicite et j'espère que vous pourrez m'aider.
J'ai bien conscience que le code VBA n'est peut-être adapté à ma problématique mais dans l'état de mes connaissances et du temps libre que j'ai, c'était la meilleur solution pour moi.
A voir s'il faut modifier l'existant ou carrément le refaire...?

Quoiqu'il en soit, merci pour votre aide !

Configuration: Windows / Firefox 94.0

83 réponses

Résumé de la discussion

Un fichier Excel Time Tracker est utilisé pour mesurer le temps passé par tâche sur un projet, avec un timer démarrable et arrêtable afin de totaliser le temps et le comparer à l’estimation. Le premier problème relevé est que cliquer de nouveau sur Démarrer réinitialise le compteur à zéro, alors que le bouton Réinitialiser est censé effacer uniquement le compteur courant; les échanges évoquent une différence de logique dans le code VBA et des choix de format d’heure. Le deuxième problème porte sur la persistance du temps après fermeture et réouverture du fichier: le timer repart à zéro au premier démarrage, et les discussions portent sur la façon de mémoriser le temps écoulé et le temps additionnel entre sessions. Des axes d’amélioration ont été proposés, notamment l’ajustement du format de saisie (HH:MM), le déverrouillage ou l’adaptation des protections, et des améliorations visuelles (barre de progression) pour mieux refléter l’avancement du projet, sans consensus clair sur une solution unique.

Bobot (l’IA à votre service)
  1. C'est parfait ! Merci !
    Cette fois je pense qu'on est bon...!
    0
    1. Bonjour,

      Merci pour les secondes et le changement d'état du bouton "Démarrer" en "Comptage".

      Par contre, les couleurs ne me conviennent pas. Mais comment faire pour changer la couleur du bouton "Comptage" ? Je sais le faire pour "Démarrer ", "Arrêter", "Temps add." et "Réinit." via les propriétés du bouton en "Mode Création". Mais je ne vois pas où le faire pour "Comptage".

      Pour le changement de couleur bouton Demarrer, il y a un petit clignotement sur arret, si genant je vais voir a corriger
      Je ne vois pas de clignotement de mon côté, donc je pense que tout est ok.
      0
      1. Re,

        Code pour couleurs

        'Module MGest_Bouton_D_A 
          'Procedure: Sub Gest_D(N)
           'couleur verte Demarrer
           With Worksheets("Projet").OLEObjects("Cmd_D" & N).Object
              .BackColor = &HFF00&
            .Caption = "Comptage"
           End With
          
          'Procedure: Sub Gest_A(N)
           'couleur bleu Demarrer
           With Worksheets("Projet").OLEObjects("Cmd_D" & N).Object
            .BackColor = &HFFFF00
                    .Caption = "Démarrer"
           End With    
        0
    2. Re

      Fichier modifie: https://www.cjoint.com/c/KLrhtSNxAFf

      Temps chronos en seconde
      Ai mis un peu de couleur
      Ai modifie le code des boutons D/A/Init

      Pour le changement de couleur bouton Demarrer, il y a un petit clignotement sur arret, si genant je vais voir a corriger
      0
      1. non je ne pense pas dépasser les 999h par tâches.
        Et si c'est le cas, je ferais un doublon de tâches.

        Merci pour le nouveau fichier.

        Effectivement, ça marche mieux quand c'est vous qui touchez au code!
        Je peux ouvrir d'autres fichiers sans qu'il y ait de problème. Merci.

        Pour le format heure, pas de soucis.

        Par contre, est-il possible d'avoir les secondes dans les "Temps tâches" ? C'est un bon repère visuel pour savoir si le timer est démarré ou non.

        Également, si je rentre un temps estimé de 1minute (0:01), et que je lance le timer celui-ci indique directement 0:01:00 dans le "Temps tâche" et le pourcentage passe directement à 100% dès la 1ère seconde.

        2e essai, Tps estimé de 1minute, je lance le timer qui démarre d'office à 1minute (donc 100%), j'arrête le timer dans la foulée et je le relance : le temps Tâche prend +1min. et cela se reproduit à chaque fois que je cliques sur Arrêter / Démarrer.
        0
        1. oui aussi
          0
          1. Re,

            Ok.
            Alors question: vous depasserez les 999h par taches?
            0
        2. Re,

          Projet plus 99 h, je sais deja, mais temps estime par tache?
          0
          1. Merci c'est sympa !

            Ok pour la saisie de l'heure. De toute façon, si je saisi pas le bon format, je pense que ça affichera une erreur ?

            Oui, les projets peuvent dépasser les 99h.
            0
            1. Re,

              Je vais vous arranger la chose avec quelques modif en plus pour saisie heure:minute seulement ex: 5420 qui donnera 54:20 pour un temps estime. Il n'y aura pas possiiblite de 54,5 pour 54:30 car la zone de saisie sera formatee __:__.
              Vous aurez a depasser les 99 h?
              0
              1. Bonjour,

                merci pour l'explication.

                J'ai essayé de suivre votre procédure mais ça ne fonctionne pas.
                J'ai déroulé le dossier "modules" sur la gauche dans VBA.
                J'ai ouvert le 1er et j'ai fais un ctrl+F pour lancer une recherche avec "worksheets".
                1er module "MConver_HH_MM_SS" : terme introuvable

                2e module "MDeclaration_VP" : terme introuvable

                3e module "MFonction_MSG" : terme introuvable

                4e module "MGestion_Temps" : 2 termes trouvés. Formules modifiées comme suit :
                Sub StartTime()
                    'PreviousTimerValue = ThisWorbook.Worksheets("Taches").Range("B" & RCel).Value
                    Call ExcelStopWatch
                End Sub

                Dim TSeconde As Long, Heures As String, TT As Long
                    
                    DoEvents
                    With ThisWorbook.Worksheets("Taches")


                5e module "Module1" : 1 terme trouvé. Formules modifiées comme suit :
                Private Sub ThisWorbook.Worksheet_Change(ByVal Target As Range)

                mais la ligne passe en rouge.

                6e module "MProgress" : 1 terme trouvé. Formules modifiées comme suit :
                Sub Barre()
                    With ThisWorbook.Worksheets("Projet")
                        x = .Range("J2")


                Je ferme VBA, je lance un timer et VBA se réouvre avec le message ATTENTION " Erreur de compilation: Attendu : fin d'instruction" et le module "Module1" est visible avec la ligne de code toujours en rouge.

                Je pense qu'il y a qqch que je fais mal mais ne connaissant pas les rouages de VBA, je ne sais pas où agir...
                0
                1. Bonjour,
                  Je viens de découvrir un "bug".

                  Non, c'est tout a fait normal.
                  Les deux fichiers sont ouvert dans la meme intance d'Excel.
                  De ce fait, il y a conflit puisque le classeur de comptage n'est plus actif
                  Je vais regarder la chose, j'ai une idée qui ira peut-être

                  Suite:
                  Ouvrez la fenetre VBA
                  Ouvrez un module
                  Faites une recherche avec Worksheets
                  Devant chaque Worksheets, ajoutez ThisWorbook., ce qui permet de continuer l'execution du code dans le classeur de comptage
                  0
                  1. Bonsoir,

                    Je viens de découvrir un "bug".

                    Lorsque le fichier est ouvert et que le timer tourne, si j'ouvre un fichier un message VBA m'indique : "Erreur d'exécution '9": L'indice n'appartient pas à la sélection" puis j'ai le choix entre "Fin" et "Débogage".

                    Cela n'apparait pas si :
                    - Le timer n'est pas lancé
                    - J'ouvre un nouveau fichier excel
                    - Si c'est un format .xlsx
                    0
                    1. Bon et bien c'est parfait ! Il ne me reste plus qu'à faire un peu de cosmétique.

                      Merci beaucoup pour toute votre aide et...votre humour ! ;)

                      Bonne continuation à vous !
                      0
                      1. Bonjour,

                        Est-ce qu'il y a une logique à cette différence ?
                        Oui

                        =Taches!G8/Taches!G9.: C'est votre formule,

                        =B13/E13: C'est une autre de mes libertes.

                        Pourquoi aller chercher ailleurs ce qui est devant vous.
                        Si vous voulez changer, pas de probleme

                        je ne sais pas où agir et que faire.
                        Ben, y a rien a faire vu qu'avec les formules modifiees il n'y a pas d'erreur (ce dont je n'etai pas sur)

                        Pour les heure avez vous besoin des secondes. Cela vous serait plus simple cote saisie: 12:00 et a l'affichage en haut restera le format heure normale: 00:00:00

                        Si vous voulez saisir sous un autre format, il vous faut definir une codification du genre post <69> et vous y tenir
                        Ce type de format ne peut etre traite qu'avec du VBA

                        Il y avait une chose tres simple pour une heure max 23:59:59 mais pas pour au dessus

                        Le comptage de temps peut se faire aussi a la minute

                        Maintenant, c'est vous le maitre des horloges
                        1
                        1. Bonjour,

                          En J2, c'est inscrit la formule : =SIERREUR((B8/E8);0)
                          Je pense que c'est correct car J2 est bien à 0% quand tous les temps estimés sont à 0:00:00.
                          Idem pour les autres cellules % des tâches.

                          A ce sujet, j'ai remarqué que J10, J18, J26 ont la formule : =B13/E13, en divise le temps tâche par le temps estimé en Feuil!Projet.
                          Par contre, la cellule J34 va pointer sur la Feuil!Taches avec la formule : =Taches!G8/Taches!G9.
                          Idem pour J42 et J50. Est-ce qu'il y a une logique à cette différence ?
                          SIERREUR fonctionne aussi bien avec "=SIERREUR((Taches!G8/Taches!G9);0)" qu'avec "=SIERREUR((B37/E37);0)

                          Par contre, pour faire la modif dans la procédure Barre, je ne sais pas où agir et que faire.

                          Merci et bonne journée,
                          0
                          1. Re,

                            Si j'écrase une cellule "temps estimé" par "0",
                            Chez moi pas d'erreur si les autres cellules ne sont pas a 0.
                            Mais si toutes les cellules sont a 0, la, erreur division par 0 a cause de la cellule J2 qui est en erreur.
                            Il suffit de modifier la formule en J2 avec un SIERREUR et une petite modif dans la procedure Barre
                            D'ailleurs vous devez voir que les cellules % par tache sont en erreur si vous entrez 0. Donc meme modif formule
                            0
                            1. Toute la subtilité du 2nd degré réside dans sa justesse. Et à l'écrit, la limite est d'autant plus fragile. Bref, ce n'est pas le débat.

                              Vous voyez, avec un peu plus d'explications tout devient compréhensible ! (2nd degré...ou pas... ;) )

                              Reste donc un problème selon moi : <Post67> "- Si j'écrase une cellule "temps estimé" par "0", un message VBA m'indique : "Erreur d'exécution '13": Incompatibilité de type" puis j'ai le choix entre "Fin" et "Débogage". Est-ce normal ? Et si oui, que dois-je faire ? Fin ? ou, Débogage ?"

                              A vous de voir si vous souhaitez continuer ce projet jusqu'au bout ou pas. Quoiqu'il advienne, je suis reconnaissant pour toute votre aide.
                              0
                              1. Re,

                                ne pas non plus me prendre pour un ***.
                                Je ne prends rien, je laisse. Maintenant si vous n'aimez pas le second degres, dommage.

                                Oui ou non ?
                                Ben non, sur une saisie sans controle VBA, il faut entrer au format attendu

                                Pourquoi avoir pris cette liberté ?
                                Ce n'est pas une liberte, c'est le moyen de voir dans quelle cellule il y un temps de saisie. Si cela vous gene enlevez la MFC

                                Maintenant ma liberte est de continuer a vous aider ou pas
                                0
                                1. Vous connaissez Excel et les MFC?
                                  Vous saurez de ce fait "pourquoi elle est rouge la carotte"

                                  Je veux bien ne pas être un cador sur Excel, chacun ses compétences, mais merci de ne pas non plus me prendre pour un ***.
                                  Avant de vous poser la question, je suis allé voir la règle de MFC et j'ai bien compris que dès que la "Valeur de la cellule >0", la cellule devient rouge. D'où ma remarque "dès 1sec. de temps additionnel" !!
                                  Le "Pourquoi" de ma question signifie 1/ Pourquoi jugez-vous utile que la cellule change de couleur dès 1sec. ? 2/ Pourquoi avoir pris cette liberté ?

                                  Oui, les cellules changent de format si au dela de 24h. Comme ecrit post <64>, pas de probleme au niveau des calculs vu que c'est Excel qui change le format
                                  J'avais bien lu votre réponse sur le post <64> !!
                                  Donc, il n'a pas la possibilité de forcer Excel à conserver le format Heure au-delà de 24h ? Oui ou non ?

                                  on est d'accord qu'il faut taper textuellement "1" "2" ":" "3" "0" ":" "0" "0" (pour 12:30:00) ?
                                  Pas du tout , il faut entrer en format Heure: 01:01:01

                                  Oui donc c'est ce que j'ai écrit !! Chaque sigle entre guillemets correspond à une frappe clavier, donc en l’occurrence on est sur le format que vous reprenez : 12:30:00 !!
                                  A cela, vous ne répondez pas à ma question : Ou est-il possible d'inscrire un temps dans un format horaire "bâtard" : 12,5 ou 12h30 ou 12.30 ? Oui ou non ?
                                  0
                                  • 1
                                  • 2
                                  • 3
                                  • 4
                                  • 5