1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Function TargetDate(Charges As Double, Delais As Double, DateDeb As Date) As Date
'Reinit au cas ou les valeurs n'aient pas été chargées
If Int(HMDeb) = 0 Then HMDeb = (DatePart("h", Range("HDeb")) / 24) + ((DatePart("n", Range("HDeb")) / 24) / 60)
If Int(HMFin) = 0 Then HMFin = (DatePart("h", Range("HFin")) / 24) + ((DatePart("n", Range("HFin")) / 24) / 60)
'Convertir Heures et Minutes de DateDeb
HMSDate = Round((DatePart("h", DateDeb) / 24) + ((DatePart("n", DateDeb) / 24) / 60), 9)
If Int(Delais) <> 0 Then 'Test pour prendre Charges ou Délais en
TimeSrce = Delais 'TimeSource
Else
TimeSrce = Charges
End If
' Ajouter les jours ....
If Int(TimeSrce) > 0 Then
Debug.Print Application.Caller.Address, DateDeb, Int(TimeSrce)
DateEnd = CDate(Application.Run("ATPVBAEN.XLA!WorkDay", DateDeb, Int(TimeSrce), HoliDays()))
Else
DateEnd = DateValue(DateDeb) 'cas des feuilles vides
End If
' Ajouter les heures....
If Round((TimeSrce - Int(TimeSrce)), 4) <> 0 Then
HTimeSrce = Round((Round((TimeSrce - Int(TimeSrce)), 4) * 8) / 24, 9)
'Debug.Print "HTimeSrce : "; HTimeSrce
EndHour = HMSDate + HTimeSrce
If EndHour > HMFin Then 'Jour + 1 si Heure >= HFin
HSUpp = EndHour - HMFin
Debug.Print DateEnd, "HMFin="; HMFin; " HSupp="; HSUpp
DateEnd = CDate(Application.Run("ATPVBAEN.XLA!WorkDay", DateEnd, 1, HoliDays()))
DateEnd = DateAdd("h", DatePart("h", Range("HDeb")) + DatePart("h", HSUpp), DateEnd)
DateEnd = DateAdd("n", DatePart("n", Range("HDeb")) + DatePart("n", HSUpp), DateEnd)
Else
'Debug.Print "EndHour < HMFin"
DateEnd = DateAdd("h", DatePart("h", EndHour), DateEnd)
DateEnd = DateAdd("n", DatePart("n", EndHour), DateEnd)
End If
Else
DateEnd = DateAdd("h", DatePart("h", HMSDate), DateEnd) ' Sinon, reprendre les heures....
DateEnd = DateAdd("n", DatePart("n", HMSDate), DateEnd) ' de la date orignale ;-))
End If
Debug.Print "TargetDate ==>"; ActiveSheet.Name, Application.Caller.Address, CDate(DateDeb), CDate(DateEnd)
TargetDate = DateEnd
End Function |
Partager