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
| Option Compare Database
Option Explicit
Dim NbJourMois As Long
Dim i As Integer
Dim d1 As Date, d2 As Date, d3 As Date
Public Function DebutSemaine(ByVal DateSemaine As Date) As Date
'NbHeuresSemaine (DateSerial([Formulaires]![Frm_Pointage]![An], [Formulaires]![Frm_Pointage]![Mois], 3))
'Prend en argument un jour dans la semaine choisie et renvoie la date du premier jour de cette semaine
i = Weekday(DateSemaine, vbMonday)
DebutSemaine = DateAdd("d", -i + 1, DateSemaine)
End Function
'Calcul du nombre d'heures pointées imputables
Public Function NbHeuresSemaineImpu(ByVal DateSemaine As Date, SalarieLog As String) As Long
d1 = DebutSemaine(DateSemaine)
d2 = d1 + 6
NbJourMois = DaysInMonth(Month(DateSemaine), Year(DateSemaine))
d3 = DateSerial(Year(DateSemaine), Month(DateSemaine), NbJourMois)
If Month(d2) > Month(DateSemaine) Then
NbHeuresSemaineImpu = Nz(DSum("[NbHeuresPointées]", "[T_Pointage]", "[DatePointage] BETWEEN " & FDateUs(d1) & " AND " & FDateUs(d3) _
& " AND [LoginSalarié]='" & SalarieLog & "'"), 0)
Else
NbHeuresSemaineImpu = Nz(DSum("[NbHeuresPointées]", "[T_Pointage]", "[DatePointage] BETWEEN " & FDateUs(d1) & " AND " & FDateUs(d2) _
& " AND [LoginSalarié]='" & SalarieLog & "'"), 0)
End If
End Function
'Calcul du nombre d'heures par semaines pour les non imputables
Public Function NbHeuresSemaineNonImputable(ByVal DateSemaine As Date, SalarieLog As String) As Long
d1 = DebutSemaine(DateSemaine)
d2 = d1 + 6
NbJourMois = DaysInMonth(Month(DateSemaine), Year(DateSemaine))
d3 = DateSerial(Year(DateSemaine), Month(DateSemaine), NbJourMois)
If Month(d2) > Month(DateSemaine) Then
NbHeuresSemaineNonImputable = Nz(DSum("[NbHeuresPointées]", "[T_Pointage_Non_Imputable]", "[DatePointage] BETWEEN " & FDateUs(d1) & " AND " & FDateUs(d3) _
& " AND [LoginSalarié]='" & SalarieLog & "'"), 0)
Else
NbHeuresSemaineNonImputable = Nz(DSum("[NbHeuresPointées]", "[T_Pointage_Non_Imputable]", "[DatePointage] BETWEEN " & FDateUs(d1) & " AND " & FDateUs(d2) _
& " AND [LoginSalarié]='" & SalarieLog & "'"), 0)
End If
End Function |