Vba calcul date légale de départ minimum à la retraite

lumpy

XLDnaute Nouveau
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 :

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
 

Paritec

XLDnaute Barbatruc
Re : Vba calcul date légale de départ minimum à la retraite

Bonjour Lumpy le forum
c'est marrant ce que tu écris, moi je suis né en 1957 et je vais m'arrêter à 60 ans tout rond.
Tu es sur de tes informations?? c'est pour tout le monde ou il y a encore des exceptions??
bon c'est vrai que du coup j'ai pas regardé ta macro!!!
a+
Papou:)
 

Paritec

XLDnaute Barbatruc
Re : Vba calcul date légale de départ minimum à la retraite

Bonjour Lumpy le forum
bon alors ta macro n'est pas bonne, car tu si tu ajoutes 7 mois + 1 mois au mois de juin tu obtiens dans ta macro le 01/14/2015 !!! et comme tu le transfert je ne sais pas ou dans un tableau peut-être tu inverses le mois et les jours
je vais te modifier cela
a+
Papou:)
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Vba calcul date légale de départ minimum à la retraite

Re Bonjour Lumpy le forum
bon alors voilà la modification à faire pour 1952 et plus.
Le reste je te laisse faire, car la condition au dessus
Code:
If dt > dtRef Then Exit Function
alors qu'il n'y a pas de variable dtRef ??
a+
Papou:)

Code:
If iYear = 1952 Then
        dtRefDepart = DateSerial(Year(dt) + 60, Month(dt) + 10, 1)
    ElseIf iYear = 1953 Then
    dtRefDepart = DateSerial(Year(dt) + 61, Month(dt) + 3, 1)
        'dtRefDepart = "01/" & iMonth + 1 + 2 & "/" & iYear + 61
    ElseIf iYear = 1954 Then
    dtRefDepart = DateSerial(Year(dt) + 61, Month(dt) + 8, 1)
        'dtRefDepart = "01/" & iMonth + 1 + 7 & "/" & iYear + 61
    ElseIf iYear > 1954 Then
    dtRefDepart = DateSerial(Year(dt) + 62, Month(dt) + 1, 1)
        'dtRefDepart = "01/" & iMonth + 1 & "/" & iYear + 62
    End If
 
Dernière édition:

lumpy

XLDnaute Nouveau
Re : Vba calcul date légale de départ minimum à la retraite

Ca fonctionne. Merci beaucoup.

J'ai également fait la modif pour l'année 1951 sur le même modèle.

Code:
If dt < "01/07/1951" Then
        dtRefDepart = DateSerial(Year(dt) + 60, Month(dt) + 1, 1)
    ElseIf dt >= "01/07/1951" And dt <= "31/12/1951" Then
        dtRefDepart = DateSerial(Year(dt) + 60, Month(dt) + 5, 1)
    End If

Je n'avais pas remarqué qu'il avait inversé le jour et le mois.

A+ :)
 

Paritec

XLDnaute Barbatruc
Re : Vba calcul date légale de départ minimum à la retraite

Re Lumpy le forum
oui c'est ce qu'il fallait faire, tu peux aussi virer toutes tes variables inutiles
comme dans le fichier joint
a+
Papou:)
 

Pièces jointes

  • Lumpy V1.xlsm
    16.8 KB · Affichages: 56

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib