Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion lumpy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lumpy

Guest
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
 
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🙂
 
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:
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:
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+ 🙂
 
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

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

J'avais repris un code utilisé pour calculer l'âge de départ à la retraite et je l'avais modifié au minimum.

Merci pour tout.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…