1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 'écart entre 2 dates en années et mois (age ou ancienneté) : positif si d est plus vieux, 0 sinon
'la fonction datediff fait la différence sans regarder le jour du mois ou le mois de l'année :( dif_an = (DateDiff("m", d, d0)) / 12 '+ DateDiff("yyyy", d, d0)
Public Function dif_an(ByVal d0 As Date, Optional ByVal d1 As Date = 0) As Double
If Not Mode_debug Then On Error GoTo err
Dim a As Integer, a0 As Integer, a1 As Integer, m As Integer, m0 As Integer, m1 As Integer, j As Integer, j0 As Integer, j1 As Integer
100 If d1 = 0 Then d1 = Date Else d1 = d1 + 1 'le jour encours n'est pas terminé, le jour précisé oui
102 j0 = Day(d0): j1 = Day(d1)
104 m0 = Month(d0): m1 = Month(d1)
106 a0 = Year(d0): a1 = Year(d1)
110 If d0 <= d1 Then
111 If j0 <= j1 Then m = m1 - m0 Else m = m1 - m0 - 1
112 If m >= 0 Then
113 a = a1 - a0
Else
114 a = a1 - a0 - 1: m = m + 12
End If
118 dif_an = a + m / 12
Else
120 dif_an = 0
End If
Exit Function
err: Call message("Erreur " & err.Number & "/" & Erl & " dans api_rh.dif_an(" & d0 & ") : " & err.description)
End Function |
Partager