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
| Function Calc_DatePaiement(pDateReference As Date, pNbJourDecal As Long, pJourPaiement As Long) As Date
' pDateReference = Date de référence
' pNbJourDecal = Nonbre de jour de décalage a appliquer à la date de ref (>=0)
' pJourPaiement = Jour de paiment dans le mois (>0):
' -> Si = à 99 Fin de mois
' Règle : si la date de paiment est > à la date de référence décalé alors il
' peut y avoir un changement de mois
Dim vDateDecale As Date
On Error GoTo Lbloups:
' Ctl des variables
If pNbJourDecal < 0 Then
Err.Raise 0, "Calc_DatePaiement", "Le nombre de jour de décalage doit être >=0"
Exit Function
End If
If pJourPaiement < 0 Then
Err.Raise 0, "Calc_DatePaiement", "Le jour de paiement doit être >0"
Exit Function
End If
' Tout va bien en continue
'
' Calcul de la date décalé
vDateDecale = DateAdd("d", pNbJourDecal, pDateReference)
' Controle du nombre de jour de paiement
If pJourPaiement = 99 Then
vDateDecale = LastDayMonth(vDateDecale)
If DateDiff("m", pDateReference, vDateDecale) > 1 And (pNbJourDecal = 30) Then
vDateDecale = DateAdd("m", -1, vDateDecale) ' on enleve 1 mois
End If
Else
' Ctl si lejour de la date décalé est > au jour de paiement
If CLng(Day(vDateDecale)) <= pJourPaiement Then
vDateDecale = DateSerial(Year(vDateDecale), Month(vDateDecale), pJourPaiement)
Else
' On décale le mois de 1 en plus
vDateDecale = DateAdd("m", 1, vDateDecale)
vDateDecale = DateSerial(Year(vDateDecale), Month(vDateDecale), pJourPaiement)
If DateDiff("m", pDateReference, vDateDecale) > 1 And (pNbJourDecal = 30) Then
vDateDecale = DateAdd("m", -1, vDateDecale) ' on enleve 1 mois
End If
End If
End If
Calc_DatePaiement = vDateDecale
Exit Function
Lbloups:
Select Case Err.Number
' Ta gestion d'erreur
Case Else
Err.Raise Err.Number, "Calc_DatePaiement." & Err.source, Err.Description
Calc_DatePaiement = "00:00:00"
End Select
End Function |
Partager