Bonjour,
Je cherche à calculer le temps de rétablissement d'un incident sous certaines contraintes, qui me posent quelques problèmes.
On doit prendre en compte 4 arguments :
dateIncident : date à laquelle l'incident a été signalé
dateCloture : Date à laquelle l'incident a été clôturé
hOuverture : heure à partir de laquelle on ne peut intervenir
hFermeture : heure à partir de laquelle on peut de nouveau intervenir
(Pour info, hFermeture-hOuverture = 3h)
La date est au format J/M/A h/m/s
Les contraintes sont : Si l'incident est signalé pendant la plage où il n'est pas possible d'intervenir alors on retranche cette plage ie :
La plage de non-intervention est entre 2h et 5h du matin, si l'incident est signalé à 2h01 et résolu à 5h30, la durée de rétablissement est de 30 minutes.
De même si l'incident est signalé à 1h et résolu à 5h30, la durée de rétablissement est de 1h30
Donc le code ci-dessous est censé faire ça, seulement il ne prend pas en compte le jour. C'est à dire que si l'incident est à 23h et qu'il est résolu à 1h -> ne fonctionne pas.
Aussi, si l'incident est signalé à 23h le 5 du mois et est résolu à 23h30 le 6 du mois, il va donner une durée de rétablissement de 30 minutes (bien sûr si je donne une heure de rétablissement avant 23h il ne fonctionne pas non plus)
Voilà mon problème, j'aimerai que mon code prenne correctement en compte ces contraintes simples mais je suis un grand débutant en info...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Function dureeIncident(dateIncident, dateCloture, hOuverture, hFermeture) Dim hIncident, hCloture, dureeJour, debugage As Double hIncident = dateIncident - Int(dateIncident) hCloture = dateCloture - Int(dateCloture) If Day(dateIncident) < Day(dateCloture) Then dureeIncident = (24 - (hFermeture - hOuverture)) + (hCloture - hIncident) Else If hIncident < hOuverture And hCloture > hFermeture Then dureeIncident = (hCloture - hIncident) - (hFermeture - hOuverture) Else If hIncident > hOuverture And hIncident < hFermeture And dateCloture > hFermeture Then dureeIncident = hCloture - hFermeture Else: dureeIncident = hCloture - hIncident End If End If End If End Function
Merci pour votre aide éventuelle.
Bien cordialement.
Partager