Calcul délais en Heures ouvrées sous ACCESS

Signaler
Messages postés
6
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
18 novembre 2011
-
Messages postés
6
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
18 novembre 2011
-
Bien le bonjour !

Je me prends un peu beaucoup la tete sur ce sujet et je commence a avoir les yeux qui se croisent...

Mon problème est simple. Je souhaite faire un suivi des délais de traitement d'une tache en ne tenant compte que des heures ouvrées.

Je m'explique :

Je souhaite savoir combien de temps s'est écoulé entre

Le 03/11/11 16:47:00 et le 07/11/11 09:01:00
Si je fais une soustraction toute bete sous access j'obtiens "3,67638888888905" 16h14m

Mais je voudrais que le calcul du temps se façe dans une plage horaire ne tenant compte que des jours ouvrables (et ceux chomés, donc je voudrais pourvoir lier l'information a une table dans laquelle je mettrais les jours a exclure du calcul en plus des samedi et Dimanche)
La plage horaire est 08:30:00=>17:00:00
Et dans l'exemple ci dessus le 04/11/11 n'était pas travaillé
Je devrais donc obtenir un résultat du type :
Le 03/11 jours de création du dossier il s'est écoulé 3minutes jusqu'a 17h puis le 07/11 il s'est écoulé 31minutes depuis 08h30 jusqu'a 09h01.
je devrais donc avoir un temps de traitement de 31+3 minutes=> 34 minutes.

Javais trouvé sous access une formule mais je pense qu'elle ne me renvoit pas un résultat cohérent. et surtout elle ne fonctionne pas sous ACCESS

=NETWORKDAYS(DATE_DEBUT;DATE_FIN;Tableau_FERIES)*(HEURE_FERMETURE-HEURE_OUVERTURE)+(HEURE_FERMETURE-HEURE_DEBUT_EVENEMENT)+(HEURE_FIN_EVENEMENT-HEURE_OUVERTURE)

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,

fais donc ton calcul ainsi :
1) n1 = différence totale en minutes
2) n2 = nb de jours non ouvrés
3) n3 = nb de jours ouvrés
3) ce_que_tu_cherches = n1 - (n2*1440) - (n3 * 480)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
6
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
18 novembre 2011

Je n'arrive pas a obtenir un résultat conforme.(surement un probléme dans mes champs utilisés

J'ai une colonne ARRIVEE(jj:mm:aaaa hh:mm:ss), une colonne D_ARRIVEE(jj/mm/aaaa) qui ne contient plus que la date,une colonne H_ARRIVEE(hh:mm:ss) qui ne contient que l'heure.

et trois autres colonnes du meme style qui se nomment CREATION,D_CREATION,H_CREATION.

mon idée est de calculer le temps de traitement du dossier(DELAI) (un dossier ne tombe pas forcement dans les plages horaires) de son arrivée à sa création.

J'ai donc:
ARRIVEE|D_ARRIVEE|H_ARRIVEE|CREATION|D_CREATION|H-CREATION|DELAI

si je fais ton calcul j'obtient :
n1 - (n2*1440) - (n3 * 480)
n1=([CREATION]-[ARRIVEE])*60)( j'obtients 346.50)
n2=[D_CREATION] - [D_ARRIVEE] (j'obtients 6)
n3=test_nbjour_ouvrés(le résultat est en jours (j'obtients 5.775)

Si je fais :
([CREATION]-[ARRIVEE])*60-(([D_CREATION]-[D_ARRIVEE])*1440)-([test_nbjour_ouvrés]*480))= -10693,4999999999
Si je fais le calcul comme suit :
346.5-(6*1440)-(5.775*480)= -11065,5000000006


avec ARRIVEE= 26/05/2011 14:12:00
avec D_ARRIVEE= 26/05/2011
avec CREATION= 01/06/2011 08:48:00
avec D_CREATION]= 01/06/2011

Normalement le résultat devrait etre 30:06
avec la formule j'obtients 12 si je spécifie comme format hh et j'obtients
Messages postés
6
Date d'inscription
vendredi 20 mars 2009
Statut
Membre
Dernière intervention
18 novembre 2011

Je viens de trouver ça sur le net mais je n'arrive pas a l'appliquer sur ACCESS (trouvé sur un forum d'aide Excel)

Function HeureOuvrées(Début, Fin, PlageFériés)
For i = Début * 1 To Fin * 1 Step TimeValue("0:01")
If Hour(i) >8 And Hour(i) < 18 And Day(i) Day(i + TimeValue("0:01")) _
And Application.CountIf([PlageFériés], CDate(Int(i)) * 1) = 0 _
And Weekday(CDate(Int(i)) * 1, 2) < 6 Then x = x + 1
Next
HeureOuvrées = x / 1440
End Function