Utiliser des heures supérieures à 24

Corrections apportées à la formule par Thierry Schreiner

Il y a quelques semaines pour la réalisation d'une base de données Access, j'ai été confronté à ce problème de somme d'heures. En faisant quelques recherches sur Internet je suis tombé sur votre page et votre formule.

Round(24*Somme([MonHeure])) & ":" & Format(Minute(Somme([MonHeure]));"00") & ":" & Format(Seconde(Somme([MonHeure]));"00")

Ayant trouvé votre solution, je l'ai aussitôt adopté dans les états que j'avais créés sous Access.

Au bout de quelques jours d'utilisation (et des données supplémentaires qui s'ajoutent chaque jour) je me suis aperçu un peu par hasard d'une erreur de résultat ( 1h00 en trop par rapport au calcul manuel) que j'ai d'abord attribuée à une erreur de saisie. Après avoir vérifié les saisies, je me suis dit que votre formule, qui marchait dans tous les calculs précédents, ne fonctionnait plus pour certaines valeurs !!!

Donc je l'ai regardée de plus près et j'ai compris le problème. L'utilisation de l'instruction Round n'est pas correcte, car elle arrondit au nombre d'heures entières.
Par exemple: 
- Pour l'addition  12:05:00 + 13:20:00  le résultat brut est 1,06  (1:25:00 affiché par Access)
  votre formule  Round(24 x 1.06) = Round(25.41666667)=25  soit 25 heures et 25 minutes (données
  par le reste de la formule que je ne remets pas en cause)
est correcte.
- Mais pour l'addition  12:15:00 + 13:20:00 le résultat brut est 1,07  (1:35:00 affiché par Access)
  votre formule  Round(24 x 1.07) = Round(25.58333333)=26  soit 26 heures et 35 minutes n'est pas correcte.

Donc j'en ai conclu qu'il faut utiliser l'instruction Int (partie entière) en lieu et place de Round pour un calcul correct.

J'ai donc modifié mes états en utilisant votre formule modifiée avec Int.

Après trois semaines d'utilisation sans problème, je suis tombé sur une nouvelle anomalie ! Après vérification des saisies, il m'a fallut me rendre à l'évidence, il subsiste un problème !!!

Cette fois-ci je me retrouve avec un cas particulier où la formule me donne un résultat avec une heure en moins !

Pour étudier de plus près cette anomalie, j'ai testé cette formule sous Excel (aberration certes  puisque Excel  n'a pas besoin de la formule pour afficher le résultat voulu).
Sous Excel la formule marche parfaitement même pour les valeurs particulières où le calcul est erroné sous Access !

Pour illustration, les données qui me posaient problème était l'addition des heures effectuée le 23/02 qui sont:
1:35 + 1:35 + 1:10 + 1:10 + 1:25 + 1:25 + 1:10 + 1:10 + 1:10 + 0:10  soit 12:00 (0,5 sans formattage)
Avec la formule Access m'affiche un résultat de 11:00 !

En décomposant pour analyse la formule sous Access je m'aperçois que Access affiche 0.5 en résultat brut de la somme des 10 valeurs à additionner  (soit 1/2 journée soit 12h00 ce qui est parfait).
Le calcul suivant (résultat brut de la somme x24) ne pose pas de problème, Access affiche bien 12.
L'anomalie n'apparaît que lorsque l'on calcule Int(résultat brut de la somme x24), Access affiche 11.
Conclusion: si Access affiche 12 pour résultat brut de la somme x24 en fait il conserve pour les calculs ultérieurs une valeur plus précise 11,9999999999 dont la partie entière est 11. 
Ce problème ne se présente que pour les sommes dont le résultat est un nombre entier d'heures.
Pour palier à cette erreur j'ai ajouté dans la formule un +0,00000001 (soit moins d'un millième de seconde). Sans effet sur les résultats dans la majorité des cas, il permet d'arrondir mes 11.99999999 à 12 pour que la formule marche dans ce cas.

J'utilise donc la formule corrigée suivante:
Int(24*Somme([MonHeure]) + 0.00000001) & ":" & Format(Minute(Somme([MonHeure]));"00") & ":" & Format(Seconde(Somme([MonHeure]));"00")