XL 2021 Calcul des âges

DomL

XLDnaute Occasionnel
Supporter XLD
Bonjour le Forum



Non spécialiste d'Excel et de Forum

J'avais interrogé Excel Downloads, pour un calcul : connaitre, l'âge d'une personne, en fonction de sa date de naissance


Le Forum, m'avait proposé 2 formules intéressantes, qui m'avait apporté LES SOLUTIONS :

=SI(A2="";"";DATEDIF(A2;AUJOURDHUI();"Y")) : nombre d'année de la personne, à ''AUJOURDHUI''


=SI(A2="";"";(AUJOURDHUI()-A2)/365) : nombre d'année de la personne, dans l'année en cours (après son anniversaire)




A l'usage, j'ai repéré un BUG : tous les calculs fonctionnent, sauf ...

... pour les mois de : septembre, octobre, novembre et décembre, quelle que soit l'année, le calcul bug !!!
J'ai souligné en orange quelques lignes, dans le tableau joint




Est-ce que, l'un d'entre vous, avec un regard sur le tableau : comprendrait le problème ? SVP



Comme toujours, d'avance merci

DL
 

Pièces jointes

  • + 50 ans.xlsx
    237 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
re
Bonjour
oui le problème est simple
datedif te donne la différence entre l'année de la date 1 et de la date 2
il ne compte pas comme un anniversaire c'est à dire année ,mois jour révolus
contrairement a datediff vba qui est pire
c'est ce que beaucoup ne comprennent pas
il te faut donc comparer le mois et voir même le jour et enlever 1 si le mois date 1 est plus grand
pour le coup je l'ai fait pour le mois
modifié en colonne AD
VB:
=SIERREUR(SI(A2="";"";DATEDIF(A2;AUJOURDHUI();"Y"))-SI(MOIS(A2)>MOIS(AUJOURDHUI());1;0);"")
1707221187475.png
 

JM27

XLDnaute Barbatruc
Bonjour
L'affichage te joue des tours.
La valeur affichée dans la colonne AF est au format nombre sans décimale, donc excel arrondi l'affichage.

bien que cela ne soit pas parfait j'aurais mis en AF2:
=SI(A2="";"";ENT(AUJOURDHUI()-A2)/365,25)

Une année en moyenne fait 365,25 jours pour tenir compte des années bissextiles
 

JHA

XLDnaute Barbatruc
Bonjour à tous

Même approche voir le fichier
VB:
=SI(A2="";"";DATEDIF(A2;AUJOURDHUI();"Y")&" ans "&DATEDIF(A2;AUJOURDHUI();"Ym")&" mois "&DATEDIF(A2;AUJOURDHUI();"md")&" jours")
Code:
=SI(A2="";"";(((AUJOURDHUI()-A2))+1)/365,25)
Code:
=SI([@[Date naissance]]="";"";([@365]-ENT([@365]))*12)

JHA
 

Pièces jointes

  • + 50 ans.xlsx
    281.9 KB · Affichages: 6

DomL

XLDnaute Occasionnel
Supporter XLD
Encore merci à chacun d'entre vous



J'ai probablement, pas bien posé le sujet !

Pas étonnant, je suis pas pro d'Excel




J'ai bien compris : format de cellule, formule incomplète, etc...

Mais dans les Formules proposées : je ne trouve pas réponse, à ma solution


Il y a toujours des écarts de calcul


Le souhait est d'avoir 2 colonnes ... ou s'afficherait juste ... le nombre d'année de la personne (sans mois et jours) :

1ere colonne :
- qui ferait le calcul
- de l'année de naissance à l'année en cours ...
- ... en tenant compte du calcul de AUJOURDHUI et à la date de naissance
- (est-ce que AUJOURDHUI est avant ou après la date de naissance (jours et mois))

SI(A2="";"";DATEDIF(A2;AUJOURDHUI();"Y")) : semblait y répondre

2ième colonne :

- qui ferait le calcul
- de l'année de naissance à l'année en cours ...
- ... sans tenir compte de la date anniversaire : juste de l'année

=SI(A2="";"";(AUJOURDHUI()-A2)/365) : semblait y répondre ... jusqu'au BUG de septembre octobre novembre et décembre




Le but est d'avoir 2 colonnes :

- avec juste 1 année d'écart (si l'anniversaire n'est pas passé)

et

- sans écart (si l'anniversaire est passé)




Je me doute, que les explications ne sont pas très ''mathématiques ... mais c'est le besoin recherché




Encore une fois ... si l'un d'entre vous , souhaites rejeter un coup d'oeil

Comme toujours, d'avance merci

DL
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

A essayer
VB:
=ARRONDI.INF(NB.JOURS.OUVRES.INTL([@[Date naissance]];AUJOURDHUI();"0000000")/365,25;0)
mais tu as la même chose avec cela
Code:
ARRONDI.INF((((AUJOURDHUI()-A2))+1)/365,25;0)
ou
Code:
=SI(A2="";"";ARRONDI.INF((((AUJOURDHUI()-A2))+1)/365,25;0))

JHA
 

DomL

XLDnaute Occasionnel
Supporter XLD
re
réponse au post#5
il me semble t'avoir donné une solution (parmi d'autre) du calcul réel en terme de nombre d'année


Effectivement, ta Formule était la plus proche du but : mais il y avait toujours des BUGs


J'essaye tranquillement les nouvelles propositions
et
reviens vers toi au besoin (cette fois-ci tranquillement, la semaine prochaine)


Merci pour ta sollicitude
 

DomL

XLDnaute Occasionnel
Supporter XLD
Je ne pouvais pas attendre pour tester, en respect de vos promptes réponses

D'autant, que j'ai compris comment faire simple et rapide



Les 2 Formules répondant aux besoins sont :

colonne AD
=SI(A2="";"";ARRONDI.INF((((AUJOURDHUI()-A2))+1)/365,25;0))

colonne AF
=SI(A2="";"";ANNEE(AUJOURDHUI())-ANNEE(A2))




Encore milles fois merci, à chacun d'entre vous, pour votre aide ... à des néophytes comme moi !

Vous me permettez aussi, d'apprendre et progresser par l'exemple


@u plaisir
et
même un peu tardivement : Bonne Année à vous tous
 

Pièces jointes

  • +50 0K.xlsx
    240.3 KB · Affichages: 1

Gégé-45550

XLDnaute Accro
Je ne pouvais pas attendre pour tester, en respect de vos promptes réponses

D'autant, que j'ai compris comment faire simple et rapide



Les 2 Formules répondant aux besoins sont :

colonne AD
=SI(A2="";"";ARRONDI.INF((((AUJOURDHUI()-A2))+1)/365,25;0))

colonne AF
=SI(A2="";"";ANNEE(AUJOURDHUI())-ANNEE(A2))




Encore milles fois merci, à chacun d'entre vous, pour votre aide ... à des néophytes comme moi !

Vous me permettez aussi, d'apprendre et progresser par l'exemple


@u plaisir
et
même un peu tardivement : Bonne Année à vous tous
Bonjour,
Sinon, il existe aussi la formule :
VB:
=FRACTION.ANNEE(AUJOURDHUI();A26;1)
qui donne l'âge et les centièmes et de laquelle on peut extraire d'un côté la partie entière et de l'autre la partie décimale.
Cordialement,
 

DomL

XLDnaute Occasionnel
Supporter XLD
Bonjour JHA

Encore merci pour ton aide de la semaine dernière

Serai-je te demander un dernier service ?

Une explication pour juste apprendre à lire la Formule :

=SI(A2="";"";ARRONDI.INF((((AUJOURDHUI()-A2))+1)/365,25;0))

Du style simplifié :
- si la cellule A2
- est égale à ''une date de naissance''
- la fonction ARRONDI INF
- calcule le nombre de jours
- de la date d'aujour'hui à la date de naissance (et rajoute) 1jours
- puis divise par le nombre de jour par une année (365.25 jours)

- le 0 ?


Est-ce que ma lecture, est a peu près juste ?

Merci d'avance pour ton regard

DL
 

riton00

XLDnaute Impliqué
Bonjour,

=SI(A2="";""; ...) ==>Si la cellule A2 est vide, le résultat sera vide
AUJOURDHUI() ==>fonction qui retourne a la date d'aujourd'hui
((AUJOURDHUI()-A2))+1) ==>nombre de jours écoulés entre aujourd'hui et la date de naissance (A2), puis ajoute 1 jour
(((AUJOURDHUI()-A2))+1)/365,25 ==> convertit le nombre de jours en années en divisant par 365,25
ARRONDI.INF(...;0) ==> arrondit le résultat précédent à l'entier. C'est-à-dire, si le résultat est 58,60 ans, il sera arrondi à 58 ans

Slts
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Ci-joint un exemple pour trouver l'âge de la personne.
j'ai utilisé différentes fonctions mais il doit en avoir d'autres
VB:
=FRACTION.ANNEE(A2;AUJOURDHUI())
Code:
=((AUJOURDHUI()-A2)+1)/365,25
Code:
=NB.JOURS.OUVRES.INTL(A2;AUJOURDHUI();"0000000")/365,25

JHA
 

Pièces jointes

  • Classeur arrondi.xlsx
    9.4 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
314 716
Messages
2 112 162
Membres
111 447
dernier inscrit
jasontantane