OVH Cloud OVH Cloud

Âge

10 réponses
Avatar
Maurice
Bonjour,

J'aimerais avoir, dans un formulaire, une case qui me=20
dirait l'=E2ge d'une personne.
J'ai essay=E9 de faire la diff=E9rence entre sa date de=20
naissance et la date actuelle, mais la r=E9ponse est en=20
jours. Je ne peux pas diviser par le nombre de jours dans=20
une ann=E9e =E0 cause des ann=E9es bissextiles, ce ne serait pas=20
pr=E9cis.

Merci ,
Maurice

10 réponses

Avatar
Raymond [mvp]
Bonjour.

si tu ne veux que l'age en années tu peux faire:
Age = DateDiff("yyyy", DateNaissance, Date)
' Si la date anniversaire n'est pas encore arrivée pour l'année en
cours, soustrait 1 de l'âge.
If DateSerial(Year(Date), Month(DateNaissance), Day(DateNaissance)) >
Date Then
Age = Age - 1
End If

tu trouveras d'autres calculs sur : http://access.vba.free.fr/calculs.htm

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:288ed01c46501$e1667f20$
Bonjour,

J'aimerais avoir, dans un formulaire, une case qui me
dirait l'âge d'une personne.
J'ai essayé de faire la différence entre sa date de
naissance et la date actuelle, mais la réponse est en
jours. Je ne peux pas diviser par le nombre de jours dans
une année à cause des années bissextiles, ce ne serait pas
précis.

Merci ,
Maurice
Avatar
CAP2
Salut,

pour compléter la réponse de Raymond, tu peux aussi faire
(Date()-[Date_Naissance])/365.25

Le ".25" te permet de "compenser" l'erreur provoquée par les années
bissextiles

A plus

CAP2
Avatar
Michel Walsh
Salut,

Pas vraiement:


? (#06-07-2004# -#06-09-1999#)/365.25
4.99657768651609

on va fêter ses 5 ans un jour en retard...?

Cela peut créer une différence de un à PLUSIEURS jours. Pour les besoins
d'une compagnie d'assurance, ou voire même pour fêter quelqu'un, c'est pas
rigolo. :-)



Espérant être utile,
Vanderghast, Access MVP



"CAP2" wrote in message
news:
Salut,

pour compléter la réponse de Raymond, tu peux aussi faire
(Date()-[Date_Naissance])/365.25

Le ".25" te permet de "compenser" l'erreur provoquée par les années
bissextiles

A plus

CAP2




Avatar
CAP2
Salut,

je viens de tester avec un champ "Date_Naiss" en type Date/Heure, un autre
champ "Aujourdhui" aussi Date/Heure (sans même utiliser Date()), je fais un
contrôle calculé avec comme source : ([Aujourdhui]-[Date_Naiss])/365.25, et
comme valeurs 06/07/1999 pour "Date_Naiss" et 06/07/2004 pour "Aujourdhui",

et je trouve 5,0020533880903490...

Il a donc bien passé ses 5 ans...

Soir un truc m'échappe, soit la formule est bonne...

J'attends de tes nouvelles ;o))

A plus

CAP2
"Michel Walsh" a écrit dans le message
de news: OUWL$
Salut,

Pas vraiement:


? (#06-07-2004# -#06-09-1999#)/365.25
4.99657768651609

on va fêter ses 5 ans un jour en retard...?

Cela peut créer une différence de un à PLUSIEURS jours. Pour les besoins
d'une compagnie d'assurance, ou voire même pour fêter quelqu'un, c'est pas
rigolo. :-)



Espérant être utile,
Vanderghast, Access MVP



"CAP2" wrote in message
news:
Salut,

pour compléter la réponse de Raymond, tu peux aussi faire
(Date()-[Date_Naissance])/365.25

Le ".25" te permet de "compenser" l'erreur provoquée par les années
bissextiles

A plus

CAP2








Avatar
Maurice
Bonjour,
Merci pour l'aide pour le code,
Je me demandais juste ce qu'il fallait créer dans mon
formulaire ou état:

Pour Age: Il faut que je mette une zone de texte et que je
la mette "=Age" dans source controle??? Ou bien son nom?
ou bien je fais un champ Age dans ma table principale, ou
dans une autre?? J'ai essayé, pour pouvoir lire l'age,
mais ça ne fonctionnait pas.

Si pour moi la date de naissance est le champ "fete" ,
j'imagine que je remplace "DateNaissance" par "fete". Dois-
je remplacer d'autres choses? (La date actuelle se
nomme "Date".

Merci beaucoup
Avatar
Raymond [mvp]
Si tu l'utilises dans une fonction, tu passes les deux dates en paramètres
et tu remplaces date par le 2e paramètre:
tu as deux exemples de cette fonction sur :
http://access.vba.free.fr/calculs.htm#Age_en_années_dans_une_fourchette_de_deux_dates._
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:29a1c01c465ae$a55e44b0$
Bonjour,
Merci pour l'aide pour le code,
Je me demandais juste ce qu'il fallait créer dans mon
formulaire ou état:

Pour Age: Il faut que je mette une zone de texte et que je
la mette "=Age" dans source controle??? Ou bien son nom?
ou bien je fais un champ Age dans ma table principale, ou
dans une autre?? J'ai essayé, pour pouvoir lire l'age,
mais ça ne fonctionnait pas.

Si pour moi la date de naissance est le champ "fete" ,
j'imagine que je remplace "DateNaissance" par "fete". Dois-
je remplacer d'autres choses? (La date actuelle se
nomme "Date".

Merci beaucoup
Avatar
Michel Walsh
Salut,


Pour certaines dates, la formule est "bonne", pour certaines dates, elle
retarde. C'est vrai que mon exemple initial étant dans le mauvais sens... en
voici un plus éloquent, impliquant deux 9 juillet:

? (#06-09-1999# -#06-09-1997#)/365.25
1.99863107460643


qui montre un retard d'un jour (on aurait fêté le 10, au lieu du 9 de
juillet). Donc, ce qui est tantôt bon, tantôt pas,... et si on désire
apporter une correction, elle enlève immédiatement la "simplicité" de la
formulation. Avant que tu ne le proposes, on peut évidemment diminuer 365.25
à quelque chose de plus précis, mais on pourra toujours trouver deux dates
qui ne fonctionnent pas (et encore plus flagrant si les dates sont proches
du premier mars et avec des années proches d'une année bisextile).



Vanderghast, Access MVP




"CAP2" wrote in message
news:%
Salut,

je viens de tester avec un champ "Date_Naiss" en type Date/Heure, un autre
champ "Aujourdhui" aussi Date/Heure (sans même utiliser Date()), je fais
un

contrôle calculé avec comme source : ([Aujourdhui]-[Date_Naiss])/365.25,
et

comme valeurs 06/07/1999 pour "Date_Naiss" et 06/07/2004 pour
"Aujourdhui",


et je trouve 5,0020533880903490...

Il a donc bien passé ses 5 ans...

Soir un truc m'échappe, soit la formule est bonne...

J'attends de tes nouvelles ;o))

A plus

CAP2
"Michel Walsh" a écrit dans le
message

de news: OUWL$
Salut,

Pas vraiement:


? (#06-07-2004# -#06-09-1999#)/365.25
4.99657768651609

on va fêter ses 5 ans un jour en retard...?

Cela peut créer une différence de un à PLUSIEURS jours. Pour les besoins
d'une compagnie d'assurance, ou voire même pour fêter quelqu'un, c'est
pas


rigolo. :-)



Espérant être utile,
Vanderghast, Access MVP



"CAP2" wrote in message
news:
Salut,

pour compléter la réponse de Raymond, tu peux aussi faire
(Date()-[Date_Naissance])/365.25

Le ".25" te permet de "compenser" l'erreur provoquée par les années
bissextiles

A plus

CAP2












Avatar
CAP2
Effectivement, avec ces dates ça rate...

Merci pour l'info, je jette ma formule aux oubliettes ;o))

A plus

CAP2

"Michel Walsh" a écrit dans le message
de news: #
Salut,


Pour certaines dates, la formule est "bonne", pour certaines dates, elle
retarde. C'est vrai que mon exemple initial étant dans le mauvais sens...
en

voici un plus éloquent, impliquant deux 9 juillet:

? (#06-09-1999# -#06-09-1997#)/365.25
1.99863107460643


qui montre un retard d'un jour (on aurait fêté le 10, au lieu du 9 de
juillet). Donc, ce qui est tantôt bon, tantôt pas,... et si on désire
apporter une correction, elle enlève immédiatement la "simplicité" de la
formulation. Avant que tu ne le proposes, on peut évidemment diminuer
365.25

à quelque chose de plus précis, mais on pourra toujours trouver deux dates
qui ne fonctionnent pas (et encore plus flagrant si les dates sont proches
du premier mars et avec des années proches d'une année bisextile).



Vanderghast, Access MVP




"CAP2" wrote in message
news:%
Salut,

je viens de tester avec un champ "Date_Naiss" en type Date/Heure, un
autre


champ "Aujourdhui" aussi Date/Heure (sans même utiliser Date()), je fais
un

contrôle calculé avec comme source : ([Aujourdhui]-[Date_Naiss])/365.25,
et

comme valeurs 06/07/1999 pour "Date_Naiss" et 06/07/2004 pour
"Aujourdhui",


et je trouve 5,0020533880903490...

Il a donc bien passé ses 5 ans...

Soir un truc m'échappe, soit la formule est bonne...

J'attends de tes nouvelles ;o))

A plus

CAP2
"Michel Walsh" a écrit dans le
message

de news: OUWL$
Salut,

Pas vraiement:


? (#06-07-2004# -#06-09-1999#)/365.25
4.99657768651609

on va fêter ses 5 ans un jour en retard...?

Cela peut créer une différence de un à PLUSIEURS jours. Pour les
besoins



d'une compagnie d'assurance, ou voire même pour fêter quelqu'un, c'est
pas


rigolo. :-)



Espérant être utile,
Vanderghast, Access MVP



"CAP2" wrote in message
news:
Salut,

pour compléter la réponse de Raymond, tu peux aussi faire
(Date()-[Date_Naissance])/365.25

Le ".25" te permet de "compenser" l'erreur provoquée par les années
bissextiles

A plus

CAP2
















Avatar
Maurice
Rebonjour,
C'était ce lien que j'avais regardé,
mais je ne comprends pas très bien ce que tu veux dire
par "paramètres".
Dans une ou l'autre des fonctions,
faut-il que je fasse une zone de texte avec source
controle "=Age" ?
Et que je mette le nom de "Úte()" à "CeJour"??

Merci
Maurice
Avatar
Raymond [mvp]
Tu appelles donc cette fonction :
Function Age(DateNaissance As Date, CeJour As Date) As Integer

pour l'appeler tu indiques en vba par exemple:
Age(Ladatedenaissance, Date)
dans une requête access graphique:
Age([Ladatedenaissance]; Date())

Dans un formulaire ou un état, tu peux créer un champ texte avec sur la
ligne source contrôle:
= Age([Ladatedenaissance]; Date())

tu peux remplacer date par n'importe quelle autre valeur de type date.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Maurice" a écrit dans le message de
news:2932601c465b7$010853c0$
Rebonjour,
C'était ce lien que j'avais regardé,
mais je ne comprends pas très bien ce que tu veux dire
par "paramètres".
Dans une ou l'autre des fonctions,
faut-il que je fasse une zone de texte avec source
controle "=Age" ?
Et que je mette le nom de "Úte()" à "CeJour"??

Merci
Maurice