Calcul entre 2 champs Dates et 2 champs Heure [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
20 juin 2013
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Voici mon problème.
Je travaille pour une compagnie de transport d'autobus scolaires et j'ai créé un formulaire pour prendre les commandes des clients. Sur le formulaire, il y a 2 champs de format Date, dtDep pour la date du départ et dtRet pour la date du retour. Le plus souvent, ces 2 champs indiquent la même valeur mais il arrive que le départ soit à 20h00 et le retour à 03h00 dans la nuit. C'est là que j'ai un problème. Les champs heures sont hrDep et hrRet, j'ai tout essayé pour calculer, hrRet - hrDep me donne 7 si le valeurs sont 08h00 et 15h00, mais lorque le voyage revient après minuit,ça ne fonctionne pas, je suis vraiment dépassé, la solution doit être tellement évidente que je na la vois pas, comme l'arbre qui cache la forêt...

Est-ce que quelqu'un peut m'aidr là-dessus.
Merci d'avance


SVigneault

7 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Pas bonjour à toi non plus !
Question de logique !
L'intervalle (durée) entre deux moments se mesure non pas en comparant des heures, mais en comparant des dates/heures.
Et le résultat ne saurait s'exprimer en mode calendaire, mais en unités de jours, heures, minutes et secondes (exclusivement), c'est-à-dire e n unités non susceptibles de variations calendaires.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Salut,

Pour arriver au résultat dans la colonne "Temps écoulé", mets cette formule
=($B2-$A2+($A2>$B2))-$C2
et copie-la dans la colonne

Début Fin Dîner Temps écoulé
08:00 18:00 00:00 10:00
22:00 06:55 00:15 08:40
08:00 18:05 01:15 08:50
08:00 16:43 00:20 08:23
08:20 17:00 00:30 08:10


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Mon exemple s'appliquait à des cellules Excel, mais ça devrait pouvoir se transposer à des valeurs de contrôles...


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
230
Bonjour, MPi
l'algo de ton code est bon, mais implique un seul passage à minuit.
Je pense que cela conviendra au cas de svigneault (je vois en effet mal un autobus scolaire faire un voyage si long qu'il couvrirait deux nuits ou plus)
Je pense également que ce n'est pas là une solution "universellement" orthodoxe.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Salut ucfoutu
C'est certain qu'il y a place à amélioration ou, du moins, à l'universalité du code...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
3
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
20 juin 2013

Je suis désolé pour mes manières un peut cavalière d'hier, je vais donc commencer par un beau Bonjour à tous

Je veux bien comprendre que les calculs se font sur 2 controles de type Date, sauf que ce controle est formaté pour une entrée horaire comme ça "00:00". Pour l'entrée ça va mais après, l'affichage donne le 30 décembre 1899, je ne crois pas qu'il y avait des autobus scolaires dnas ces années là
voici la composition de mes controls.
hrDep, format Heure, abrégé
hreRet, format Heure, abrégé
Mpi, je n'arrive pas à comprendre ta formule pour la tranférer vers Access
Merci a vous deux...

SVigneault
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Si on avait un bout de ton code, ça aiderait peut-être (?)

Pour le format de tes contrôles, je pense que tu peux changer directement dans leurs propriétés en format heure plutôt que date

Pour les formules, tu pourrais essayer comme ceci
=hrRet - hrDep + (hrDep > hrRet)
On laisse tomber le lunch...

Pour explication, hrDep > hrRet retourne un booléen (1 ou 0)

Le résultat doit être affiché dans un contrôle avec le format heure aussi, en principe... Ça dépend de ce que tu veux faire du/des résultats.

Tu serais peut-être étonné au sujet des autobus puisque le métro de Londres a été créé autour de ces années...

Bonne St-Jean

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI