Additionner des heures

Comment additionner des heures dans Access, tout en dépassant les 24 heures ? Ce qui revient à : comment transformer des heures Access en centièmes ?

Principe

Vous aurez sans doute besoin un jour de transformer des heures Access (format #hh:mm:ss#) en centièmes, pour faire des calculs ensuite : par exemple, calculer des salaires horaires. La fonction qui suit va simplifier le principe de calcul, et pourra être utilisée ensuite partout dans votre base Access.

La fonction

Recopiez la fonction suivante dans un module standard d’Access :

Tester !

Pour tester cette fonction :

  1. Ouvrez la fenêtre Exécution (CTRL + G).
  2. Tapez :
    ? HeureDecimale(#15:30#)
    puis [Entrée].

Vous devez obtenir la valeur 15.5.

  • En utilisant la valeur #15:29#, vous allez par contre obtenir 15.483333.
  • Vous pouvez aussi utiliser l’heure du moment : HeureDecimale(Now).
  • Et bien sûr, dans une requête, vous pourrez remplacer l’heure par un champ de table (ça fera l’objet d’un autre article sur le blog).

Comment ça marche ?

Les dates et les heures sont stockées sous forme de valeur décimale. Une date comme le 25/12/2011 à 12:00 vaut par exemple 40902.5. Pour le vérifier, tapez ceci dans la fenêtre Exécution :

La fonction CDbl() convertit une valeur en Numérique/Double.

Rappel
Les dates sont toujours délimitées par le signe # dans Access.

Lorsqu’une date est vue sous sa valeur numérique brute :

  • La partie entière (40902) donne le nombre de jours écoulés depuis le depuis du calendrier Access.
  • La partie décimale (0.5) donne les heures écoulées dans la journée. Il est donc logique que l’heure de midi corresponde à 1/2 journée, donc 0.5. De la même manière, 0.75 correspond à 3/4 de journée, soit 18:00.

Pour exploiter tout ça, notre fonction HeureDecimale()

  1. Extrait la partie décimale uniquement d’une date dt. Cette partie décimale étant la différence entre dt et sa partie entière (donnée par la fonction Int()).
  2. Convertit cette partie décimale en valeur double.
  3. Multiplie le résultat par 24.

De cette manière, 0.5 devient 12 (12 heures), 0.75 devient 18. Ça marche bien sûr pour des valeurs moins simples !

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *