Bonjour,
En vba, j’ai besoin de calculer la date légale minimum de départ à la retraite qui est fonction de son âge.
En sachant qu’une personne née avant le 1/07/1951, son âge minimum de départ en retraite est de 60 ans. Née du 01/07 au 31/12/1951, 60 ans et 4 mois, née en 1952 : 60 ans et 9 mois, née en 1953 : 61 ans et 2 mois, née en 1954 : 61 ans et 7 mois, à partir de 1955 : 62 ans.
J'ai écrit ce code qui ne fonctionne pas correctement :
Le résultat se reporte dans le champ d'un formulaire.
Exemple : Une date de naissance le 11/06/1954 donne pour résultat 14/01/2015 alors qu'elle devrait donner 01/02/2016.
Merci d'avance pour vos idées.
https://www.lassuranceretraite.fr/c...a54/service/CalculerAgeDepart?packedargs=null
En vba, j’ai besoin de calculer la date légale minimum de départ à la retraite qui est fonction de son âge.
En sachant qu’une personne née avant le 1/07/1951, son âge minimum de départ en retraite est de 60 ans. Née du 01/07 au 31/12/1951, 60 ans et 4 mois, née en 1952 : 60 ans et 9 mois, née en 1953 : 61 ans et 2 mois, née en 1954 : 61 ans et 7 mois, à partir de 1955 : 62 ans.
J'ai écrit ce code qui ne fonctionne pas correctement :
Code:
Public Function ExactDepartRetraite(BirthDate As Variant) As String
Dim iYear As Integer
Dim iMonth As Integer
Dim d As Integer
Dim dt As Date
Dim sResult As String
If Not IsDate(BirthDate) Then Exit Function
dt = CDate(BirthDate)
If dt > dtRef Then Exit Function
iYear = Year(dt) 'Année de naissance
iMonth = Month(dt) 'Mois de naissance
d = Day(dt) 'Jour de Nce
If dt < "01/07/1951" Then
dtRefDepart = "01/" & iMonth + 1 & "/" & iYear + 60
ElseIf dt >= "01/07/1951" And dt <= "31/12/1951" Then
dtRefDepart = "01/" & iMonth + 1 + 4 & "/" & iYear + 60
End If
If iYear = 1952 Then
dtRefDepart = "01/" & iMonth + 1 + 9 & "/" & iYear + 60
ElseIf iYear = 1953 Then
dtRefDepart = "01/" & iMonth + 1 + 2 & "/" & iYear + 61
ElseIf iYear = 1954 Then
dtRefDepart = "01/" & iMonth + 1 + 7 & "/" & iYear + 61
ElseIf iYear > 1954 Then
dtRefDepart = "01/" & iMonth + 1 & "/" & iYear + 62
End If
MsgBox iYear
Me.DepartReforme.Value = dtRefDepart
End Function
Le résultat se reporte dans le champ d'un formulaire.
Exemple : Une date de naissance le 11/06/1954 donne pour résultat 14/01/2015 alors qu'elle devrait donner 01/02/2016.
Merci d'avance pour vos idées.
https://www.lassuranceretraite.fr/c...a54/service/CalculerAgeDepart?packedargs=null