Home
Home

--- Soumis par Robin Stoddart-Stones ---

Le temps, ajouter et soustraire des temps, feuille de temps.

    On peut se demander "Comment additionner des temps", "Convertir en heure et minutes", "Facturer pour plus de 24 heures" et autres choses intéressantes du genre.

    Access97 nous fournit le type de données date_temps qui possède des propriétés intéressantes.

    Utilser le champ date.

Si vous utiliser le type de données Date_temps, vous pouvez facilement y capturer la date et l'heure du système, ce qui ouvre la voie à une you application de feuille de temps.

En cliquant sur un bouton, par exemple, on peut capturer le temps dans un champ ou une variable (de type date). Tous les exemples sont copiés depuis la fenêtre immédiate (Debug Window) d'Access 97.

    Ainsi:

Dim lsdt as Date (dans un module) puis, dans la fenêtre d'exécution immédiate
lsdt=Date + Time
? lsdt= 17/02/99 17:10:49. (au monent de la saisie)

    Un champ date-temps peut être soustrait d'un autre pour obtenir le résultat comme une fraction de jour:

    Ainsi:

lsdt=#16:00#-#15:45#
?lsdt
1.04166666666666E-02

? (24*60)*1.04166666666666E-02
14.9999999999999 (ie approx 15 minutes au n/1000ths de seconde)

in other words subtract one time from the other to get the arithmetic answer. Add several of these fractions togther and you get the total time.

?1.04166666666666E-02 +1.04166666666666E-02
2.08333333333332E-02
?(24*60)*2.08333333333332E-02
29.9999999999998 (Suffisamment près de  30 minutes, même si vous facturez comme un avocat!)

    Si le résultat est en deçà de la barre des 24 heures, vous pouvez facilement utiliser un format pour faciliter la lecture,  format (x,"Short Time")

    Ainsi:

?format(2.08333333333332E-02,"short time")
00:30
ce qui est utile pour fins de facturation.

    Si votre taux horaire est de £11.50, alors, par jour, il est de24*11.50 et vous chargerez, pour 30 minutes de travail:

?24*11.50 * 2.08333333333332E-02
5.74999999999996

Il est donc aisé d'emmagasiner le temps dans un champ, de soustraire deux champs pour obtenir un laps de temps, d'utiliser un format pour facilement lire le résultat, et un petit calcul fournit le coût, si moins de 24 heures furent travaillées.

"Aah! Mais" vous entends-je, "nous travaillons plus de 24 heures".

For simple, si vous ajoutez de petits incréments. Ici, je passe de 47 demies-heures à 49:

?47*2.08333333333332E-02
0.97916666666666
?24* 0.97916666666666
23.4999999999998 (ie 47 demie-heures, c'est 23.5 h)

?48*2.08333333333332E-02
0.999999999999994
?24*0.999999999999994
23.9999999999999 (24 h)

?49*2.08333333333332E-02
1.02083333333333
?24*1.02083333333333
24.4999999999999 (24.5 h)

maintenant, si je calcule des durées (Gérance de projet?), on peut obtenir la fin du projet en ajoutant la durée à la date de départ:

lsdt=#01-dec-99#
?lsdt
01/12/99
lsdt=lsdt+1.02083333333333
?lsdt
02/12/99 00:30:00

Entre d'autres mots, à minuit, le minuit entre le 30/nov/99 et le 01-Dec-99, on ajoute  24.5h, on obtient 00:30 le deux décembre.

Le seul problème c'est qu'il n'y a pas de format simple pour des période de plus de 24 heures.

?format(1.02083333333333,"short Time")
00:30

mais c'est facile de se rendre compte que la valeur est supérieure à un (1.00). Il est également facile de calculer la portion exédant 24heures.

lsdt=1.020833333333
days=Int(lsdt)
?days
1
Hours=24*(lsdt-days)
?hours
0.499999999991999
minutes=(hours-int(hours))*60
?minutes
29.99999999952

et si vous travaillez passé minuit

?#02-dec-99 00:30# - #01-dec-99 00:00#
1.02083333333576

ce qui est suffisamment précis pour moi, à ce stage, la différence étant mineure entre ce calcul et le calcul de 49 demies-heures, 1.0208333333.

Inversant le processus:

Si vous entrez des heures et des minutes, dans votre feuille de temps, alors

minutes =mins/(24*60)

Hours=hrs/24

time=hours + minutes

?#07:30#-#00:00#
0.3125
minutes=30/(24*60)
hours=7/24
?hours+minutes
0.3125

et ainsi, ajouter des intervalles de temps devient facile!