Position d'employé(e)s en activité ou en retraite par rapport à la législation

degap05

XLDnaute Impliqué
Bonjour,

J'ai besoin de votre aide pour déterminer la position d'employé(e)s, en activité ou en retraite, d'une collectivité territoriale.
La base du calcul est la date de naissance en colonne D et la condition en feuille 2.
Le résultat serait en colonne S.
J'ai essayé une formule simpliste en colonne S, sans les conditions en feuille 2 et encore sans résultat.....
Le plus serait qu'une alerte s'affiche dans la cellule correspondante en colonne S, 3 mois avant la date.

Avec votre aide.
Merci.
A+
 

Pièces jointes

  • assfam.xls
    28.5 KB · Affichages: 72
  • assfam.xls
    28.5 KB · Affichages: 70
  • assfam.xls
    28.5 KB · Affichages: 76
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonjour degap05

Un premier jet avec des fonctions personnalisées
A tester (ce n'est pas mon point fort)
J'y reviendrai car les limites sont en réalité dans la fonction .Il me reste a les pecher en Feuil2
 

Pièces jointes

  • assfam.xls
    59.5 KB · Affichages: 73
  • assfam.xls
    59.5 KB · Affichages: 79
  • assfam.xls
    59.5 KB · Affichages: 75

degap05

XLDnaute Impliqué
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonsoir Pierrejean,

1/11/1938 ??

Je suis impressionné de ta maîtrise du VBA, comme toujours.
Le résultat est déjà très bon, appliqué au fichier de travail.
Seule l'année 1955, semble poser un problème !! Bizarre non ?
Autre curiosité, si l'on étend les "formules", sans renseigner les lignes, on obtient "retraite" et "112 ans 3 mois et 19 jours" ?
Mais je suis impatient de voir ce que tu veux compléter.
Déjà un grand merci.
A+
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonsour®
J'ai besoin de votre aide pour déterminer la position d'employé(e)s, en activité ou en retraite, d'une collectivité territoriale.
La base du calcul est la date de naissance en colonne D et la condition en feuille 2.
Le résultat serait en colonne S.
J'ai essayé une formule simpliste en colonne S, sans les conditions en feuille 2 et encore sans résultat.....
Le plus serait qu'une alerte s'affiche dans la cellule correspondante en colonne S, 3 mois avant la date.
sourire...
comme pierrejean est déjà passé...(I like)
je me dois d'y apposer ma patte (sans macro !) et apporter le petit plus demandé.
 

Pièces jointes

  • assfam(1).xls
    55.5 KB · Affichages: 79

david84

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonsoir tout le monde,
je te communique fonction personnalisée de Roger2327 qui semble faire ce que tu demandes :
Code:
Function diffDate(d1 As Date, d2 As Date) As String
Dim d As Date, a&, m&, s&, j&
    d = WorksheetFunction.Min(d1, d2)
    If (d > 60) Then
        If (d <> d1) * (d1 <> d2) Then diffDate = "moins " 'signe
       d2 = WorksheetFunction.Max(d1, d2): d1 = d
        Do While DateSerial(Year(d1) + a + 1, Month(d1), Day(d1)) <= d2: a = a + 1: Loop 'Années
       Do While DateSerial(Year(d1) + a, Month(d1) + m + 1, Day(d1)) <= d2: m = m + 1: Loop 'Mois
       Do While DateSerial(Year(d1) + a, Month(d1) + m, Day(d1) + (s + 1) * 7) <= d2: s = s + 1: Loop 'Semaines
       Do While DateSerial(Year(d1) + a, Month(d1) + m, Day(d1) + s * 7 + j + 1) <= d2: j = j + 1: Loop 'Jours
       diffDate = diffDate & IIf(a, a & " an" & IIf(a > 1, "s", "") & " ", "") _
            & IIf(m, m & " mois ", "") _
            & IIf(s, s & " semaine" & IIf(s > 1, "s", "") & " ", "") _
            & IIf(j Or (a + m + j = 0), j & " jour" & IIf(j > 1, "s", ""), "") 'Affichage
   End If
End Function
A+
 

degap05

XLDnaute Impliqué
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonjour à Modeste geedee et David 84,

Modeste, j'ai compris ta démarche et les différentes données que tu as mis en place, ainsi que la mise en forme conditionnelle.Pour une date de naissance au 20/12/1951, cela donne: Retraite 60 ans et 4 mois 60 ans 3 mois 29 j 22036, alors que l'agent n'a pas 60 ans et 4 mois ?
Est-ce que, par ailleurs, appliquer 365,25 pour les années bissextiles et suffisamment détaillé par rapport à la date de naissance (nombre réel d'années bissextiles pendant la période considérée) ?

David, je ne pense pas et même je suis sur de ne pas savoir adapter ce code à mes besoins. Peut-être avec un petit fichier exemple, pour voir fonctionner ce code et encore ??

Merci à tous les deux et encore une fois à Pierrejean.
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Re

Comme nous allons avoir un nouveau president , il n'est pas impossible qu'il y ait des changements
Avec cette version il suffira de remplir la Feuil2
Je jette par ailleurs un cil aux autres propositions
 

Pièces jointes

  • assfam.xls
    57.5 KB · Affichages: 54
  • assfam.xls
    57.5 KB · Affichages: 63
  • assfam.xls
    57.5 KB · Affichages: 56

pierrejean

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Re

@ David

1) On peut preferer l'excellente fonction de notre ami ROGER , neanmoins dans cette version le resultat est assorti du nombre de semaines ce qui n'en faciliterait pas necessairement l'exploitation

2) Dans le cas de degap05 cela va un peu plus loin puisqu'il faut comparer ensuite l'age du fonctionnaire a l'age theorique de la prise de retraite
 

Modeste geedee

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonsour®
les différentes données que tu as mis en place, ainsi que la mise en forme conditionnelle.Pour une date de naissance au 20/12/1951, cela donne: Retraite 60 ans et 4 mois 60 ans 3 mois 29 j 22036, alors que l'agent n'a pas 60 ans et 4 mois ?
Est-ce que, par ailleurs, appliquer 365,25 pour les années bissextiles et suffisamment détaillé par rapport à la date de naissance (nombre réel d'années bissextiles pendant la période considérée) ?

ce n'est pas uniquement un probleme d'année bissextile, c'est surtout un probleme de nbr de jour dans un mois.(31, 30, 28 et parfois 29)
un année moyenne fait effectivement 365.256363051 jours (soit 365 jours 6 h 9 min 9,77 s sujet à variation selon les millénaires, 1,25 microseconde de plus par année)
un mois moyen serait donc en jours = 365.256363051/12 ou 30,438025425 jour

Quelque soit la méthode employée si l'on fait intervenir la notion de mois,
un même age en jours peut etre représenté avec des années/mois/jours différents
selon les bornes de calculs(naissance, date de calcul)

A noter que la fonction non documentée EXCEL DATEDIF est buggée lorsque
  • la date la plus récente est dans une année bissextile
  • le mois de la date la plus récente est "janvier"
  • et que l'option "md" est utilisée
utiliser plutot la fonction de pierrejean

autre raté : dans l'exemple que j'ai fourni, la MEFC est incorrecte...
désolé:-(
 

degap05

XLDnaute Impliqué
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonjour Pierrejean et Modeste,

Parfait Pierrejean, surtout avec l'anticipation de modifications de la législation.
Merci également à Modeste pour sa proposition.
En considérant la MEFC, comment soustraire "age" de "age minimum" pour appliquer au résultat <90, pour colorer le mot "activité" par une MEFC, 90 jours avant le passage à "retraite" ?
 

Modeste geedee

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Bonsour®
Bonjour Pierrejean et Modeste,

Parfait Pierrejean, surtout avec l'anticipation de modifications de la législation.
Merci également à Modeste pour sa proposition.
En considérant la MEFC, comment soustraire "age" de "age minimum" pour appliquer au résultat <90, pour colorer le mot "activité" par une MEFC, 90 jours avant le passage à "retraite" ?

sourire...
cela est plus complexe qu'un simple gap par rapport à l'age...
en fait la MEFC serait à appliquer (INDEX/EQUIV) par rapport à une seconde table age légal prenant en compte le gap 90
 

david84

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Re
@Pierrejean :
1) On peut preferer l'excellente fonction de notre ami ROGER , neanmoins dans cette version le resultat est assorti du nombre de semaines ce qui n'en faciliterait pas necessairement l'exploitation

Tu as raison ! J'ai pris la discussion en route. Vois ici les différentes solutions proposées par notre ami Roger. Certaines sont paramétrables et peuvent donc ramener le résultat voulu selon les critères escomptés (enfin je crois !).

2) Dans le cas de degap05 cela va un peu plus loin puisqu'il faut comparer ensuite l'age du fonctionnaire a l'age theorique de la prise de retraite
Ok.
A+
 

pierrejean

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Re

Vois cette version
Mais surtout teste bien à fond avant d'adopter
NB: Je ne suis absolument pas sur que la cas des natifs du 29 février soit résolu
 

Pièces jointes

  • assfam.xls
    70.5 KB · Affichages: 83
  • assfam.xls
    70.5 KB · Affichages: 94
  • assfam.xls
    70.5 KB · Affichages: 85

degap05

XLDnaute Impliqué
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Pierrejean,

La MEFC = OK
Par contre le calcul de l'âge semble poser problème. Pour, 1952 et 2012 année bissextile:
naissance le 28/02/1952 = 60 ans 1 mois et 22 jours = faux, la bonne réponse serait 21 jours
naissance le 29/02/1952 = 60 ans 1 mois et 21 jours = faux, la bonne réponse serait 20 jours
par contre,
naissance le 19/02/1952 = 60 ans et 2 mois = juste
naissance le 20/02/1952 = 60 ans 1 mois et 30 jours = faux si l'on compte les mois à 30 jours.
Complexe!!
Qu'en penses-tu ?
 

pierrejean

XLDnaute Barbatruc
Re : Position d'employé(e)s en activité ou en retraite par rapport à la législation

Re

S'il y a bien quelque chose dont je suis archi sur c'est bien du calcul de l'age !!!
Prenons le 28/02/1952
nous sommes le 19/04/2012
19 etant inferieur a 28 il faut ramener les jours du mois precedent le mois d'avril (mars) soit 31 jours
et l'on fait la soustraction
31+19 4-1 2012
- 28 2 1952
_______________
22 1 60

Il s'agit simplement de 3 soustractions avec retenues et c'est l'algorithme utilisé par ma fonction ,la seule difficulté etant de bien reperer le nombre de jours du mois precedent (mais la aussi je suis sur de moi)
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 323
Membres
102 862
dernier inscrit
Emma35400