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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
| Function dif_dates_hh(deb As Date, fin As Date, hho_bas As Integer, hho_haut As Integer, ferier As Variant) As Integer
Dim nb_jours, nb_jours_ouvres As Integer
Dim t_deb, t_fin As Integer
Dim calcul_heure_deb, calcul_heure_fin, limite_hh As Date
nb_jours = Day(fin) - Day(deb)
Select Case nb_jours
Case 0:
If NetworkDays.intl(deb, fin, , ferier) = 0 Then
dif_dates_hh = 0
Else
If Hour(deb) < hho_bas Then
calcul_heure_deb = TimeSerial(hho_bas, 0, 0)
ElseIf Hour(deb) > hho_haut Then
calcul_heure_deb = TimeSerial(hho_haut, 0, 0)
Else:
calcul_heure_deb = deb
End If
If Hour(fin) < hho_bas Then
calcul_heure_fin = TimeSerial(hho_bas, 0, 0)
ElseIf Hour(fin) > hho_haut Then
calcul_heure_fin = TimeSerial(hho_haut, 0, 0)
Else:
calcul_heure_fin = fin
End If
dif_dates_hh = (Hour(calcul_heure_fin) - Hour(calcul_heure_deb)) * 60 + (Minute(calcul_heure_fin) - Minute(calcul_heure_deb))
End If
Case 1:
nb_jours_ouvres = NetworkDays.intl(deb, fin, , ferier)
If nb_jours_ouvres = 0 Then
dif_dates_hh = 0
Else
If Hour(deb) < hho_bas Then
calcul_heure_deb = TimeSerial(hho_bas, 0, 0)
ElseIf Hour(deb) > hho_haut Then
calcul_heure_deb = TimeSerial(hho_haut, 0, 0)
Else:
calcul_heure_deb = deb
End If
If Hour(fin) < hho_bas Then
calcul_heure_fin = TimeSerial(hho_bas, 0, 0)
ElseIf Hour(fin) > hho_haut Then
calcul_heure_fin = TimeSerial(hho_haut, 0, 0)
Else:
calcul_heure_fin = fin
End If
If NetworkDays.intl(deb, deb, , ferier) = 1 Then
t_deb = (60 - Minute(calcul_heure_deb)) + ((hho_haut - 1) - Hour(calcul_heure_deb)) * 60
Else
t_deb = 0
End If
If NetworkDays.intl(fin, fin, , ferier) = 1 Then
t_fin = (Hour(calcul_heure_fin) - hho_bas) * 60 + Minute(calcul_heure_fin)
Else
t_fin = 0
End If
dif_dates_hh = t_deb + t_fin
End If
Case Else:
nb_jours_ouvres = NetworkDays.intl(deb, fin, , ferier)
If nb_jours_ouvres = 0 Then
dif_dates_hh = 0
Else
If Hour(deb) < hho_bas Then
calcul_heure_deb = TimeSerial(hho_bas, 0, 0)
ElseIf Hour(deb) > hho_haut Then
calcul_heure_deb = TimeSerial(hho_haut, 0, 0)
Else:
calcul_heure_deb = deb
End If
If Hour(fin) < hho_bas Then
calcul_heure_fin = TimeSerial(hho_bas, 0, 0)
ElseIf Hour(fin) > hho_haut Then
calcul_heure_fin = TimeSerial(hho_haut, 0, 0)
Else:
calcul_heure_fin = fin
End If
If NetworkDays.intl(deb, deb, , ferier) = 1 Then
t_deb = (60 - Minute(calcul_heure_deb)) + ((hho_haut - 1) - Hour(calcul_heure_deb)) * 60
nb_jours_ouvres = nb_jours_ouvres - 1
Else
t_deb = 0
End If
If NetworkDays.intl(fin, fin, , ferier) = 1 Then
t_fin = (Hour(calcul_heure_fin) - hho_bas) * 60 + Minute(calcul_heure_fin)
nb_jours_ouvres = nb_jours_ouvres - 1
Else
t_fin = 0
End If
dif_dates_hh = t_deb + t_fin + nb_jours_ouvres * (hho_haut - hho_bas) * 60
End If
End Select
End Function |
Partager