Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Calcul de l'âge en année et en mois

7 réponses
Avatar
Leyley39
Bonjour

Je construis une base de données sur access et je voudrais que lorsqu'on
saisie la date de naissance d'une personne dansun formulaire, l'âge de
celle-ci s'affiche dans un contrôle en année et en mois. J'ai trouvé ce
calcul mais il ne fonctionne pas toujours. Est-ce que quelqu'un voit l'erreur
dans le calcul ?

Age =(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans et " &
VraiFaux(Mois(Date())>Mois([date de naissance]);12-Abs(Mois([date de
naissance])-Mois(Date()));-(Mois([date de naissance])-Mois(Date()))) & " mois"
--
Merci de votre aide

Leyley39

7 réponses

Avatar
Fabien
Leyley39 a écrit :
Bonjour

Je construis une base de données sur access et je voudrais que lorsqu'on
saisie la date de naissance d'une personne dansun formulaire, l'âge de
celle-ci s'affiche dans un contrôle en année et en mois. J'ai trouvé ce
calcul mais il ne fonctionne pas toujours. Est-ce que quelqu'un voit l'erreur
dans le calcul ?

Age =(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans et " &
VraiFaux(Mois(Date())>Mois([date de naissance]);12-Abs(Mois([date de
naissance])-Mois(Date()));-(Mois([date de naissance])-Mois(Date()))) & " mois"


Salut,
Pour les années year(now())-year([Date de naissance])
et pour les mois datediff("m",now(),cdate("01/" & month([Date de
naissance]) & "/" & year(now()))
@ tester ;-)
@+
Avatar
Leyley39
Bonjour Fabien

Merci pour ta réponse rapide. J'ai essayé ton équation mais ça ne fonctionne
pas.

En fait, je ne dois pas être très loin d'avoir la bonne équation mais ca ne
fonctionne pas toujours sur certaines dates.
--
Si tu vois l'erreur ou si quelqu'un d'autre la vois, merci de votre aide.

Leyley39


"Fabien" a écrit :

Leyley39 a écrit :
> Bonjour
>
> Je construis une base de données sur access et je voudrais que lorsqu'on
> saisie la date de naissance d'une personne dansun formulaire, l'âge de
> celle-ci s'affiche dans un contrôle en année et en mois. J'ai trouvé ce
> calcul mais il ne fonctionne pas toujours. Est-ce que quelqu'un voit l'erreur
> dans le calcul ?
>
> Age =(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans et " &
> VraiFaux(Mois(Date())>Mois([date de naissance]);12-Abs(Mois([date de
> naissance])-Mois(Date()));-(Mois([date de naissance])-Mois(Date()))) & " mois"
Salut,
Pour les années year(now())-year([Date de naissance])
et pour les mois datediff("m",now(),cdate("01/" & month([Date de
naissance]) & "/" & year(now()))
@ tester ;-)
@+



Avatar
3stone
Salut,

"Leyley39"
| Je construis une base de données sur access et je voudrais que lorsqu'on
| saisie la date de naissance d'une personne dansun formulaire, l'âge de
| celle-ci s'affiche dans un contrôle en année et en mois. J'ai trouvé ce
| calcul mais il ne fonctionne pas toujours. Est-ce que quelqu'un voit l'erreur
| dans le calcul ?
|
| Age =(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans et " &
| VraiFaux(Mois(Date())>Mois([date de naissance]);12-Abs(Mois([date de
| naissance])-Mois(Date()));-(Mois([date de naissance])-Mois(Date()))) & " mois"


Utilise plutôt ceci :
http://homepage.bluewin.ch/wstucki//CalculsDates.htm#ageMois

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Leyley39
Merci 3stone pour ton aide mais, au risque de parraître nul, je ne sais pas
où et comment me servir de ce code. J'ai essayer de l'intégrer dans un
événement mais il y a toujours une erreur de compilation. Si mon champs se
nomme [DATE DE NAISSANCE] et que je veux toujours que le calcul se fasse à
partir de la date du jour (Date()), comment devrais-je présenter ca ? Et où
le placer ?

Function AgeX(dn As Date, dx As Date) As String
'Objectif: calcul de l'âge en années et mois pleins
'Arguments: dn = date de naissance, dx = date quelconque
Dim y1 As Integer, y0 As Integer, m1 As Integer, m0 As Integer
Dim d1 As Integer, d0 As Integer
d1 = Day(dx)
m1 = Month(dx)
y1 = Year(dx)
d0 = Day(dn)
m0 = Month(dn)
y0 = Year(dn)
If d0 > d1 Then m0 = m0 + 1
If m0 > m1 Then
y0 = y0 + 1
m1 = m1 + 12
End If
AgeX = (y1 - y0) & " ans, " & (m1 - m0) & " mois"
End Function
--
Merci de ton aide

Leyley39


"3stone" a écrit :

Salut,

"Leyley39"
| Je construis une base de données sur access et je voudrais que lorsqu'on
| saisie la date de naissance d'une personne dansun formulaire, l'âge de
| celle-ci s'affiche dans un contrôle en année et en mois. J'ai trouvé ce
| calcul mais il ne fonctionne pas toujours. Est-ce que quelqu'un voit l'erreur
| dans le calcul ?
|
| Age =(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans et " &
| VraiFaux(Mois(Date())>Mois([date de naissance]);12-Abs(Mois([date de
| naissance])-Mois(Date()));-(Mois([date de naissance])-Mois(Date()))) & " mois"


Utilise plutôt ceci :
http://homepage.bluewin.ch/wstucki//CalculsDates.htm#ageMois

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




Avatar
Fabien
Leyley39 a écrit :
Merci 3stone pour ton aide mais, au risque de parraître nul, je ne sais pas
où et comment me servir de ce code. J'ai essayer de l'intégrer dans un
événement mais il y a toujours une erreur de compilation. Si mon champs se
nomme [DATE DE NAISSANCE] et que je veux toujours que le calcul se fasse à
partir de la date du jour (Date()), comment devrais-je présenter ca ? Et où
le placer ?

Function AgeX(dn As Date, dx As Date) As String
'Objectif: calcul de l'âge en années et mois pleins
'Arguments: dn = date de naissance, dx = date quelconque
Dim y1 As Integer, y0 As Integer, m1 As Integer, m0 As Integer
Dim d1 As Integer, d0 As Integer
d1 = Day(dx)
m1 = Month(dx)
y1 = Year(dx)
d0 = Day(dn)
m0 = Month(dn)
y0 = Year(dn)
If d0 > d1 Then m0 = m0 + 1
If m0 > m1 Then
y0 = y0 + 1
m1 = m1 + 12
End If
AgeX = (y1 - y0) & " ans, " & (m1 - m0) & " mois"
End Function


Salut,
Normalement l'appel a cette fonction dans ton cas serait
Sur l'événement aprés mise a jour du champs Date de naissance, pour que
le resultat s'affiche dans une zone Zoneaffichage

Me.zoneAffichage=AgeX(me.[Date de Naissance],Date)

@+
Avatar
Leyley39
Bonjour

J'ai finalement fait cette équation pour trouver l'âge en année et en mois.
La réponse est toujours bonne. Moins compliquer que de faire un code. A
placer dans Source de contrôle des propriétés de votre zone de texte "Age".

=(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans " & Ent((((Date()-[DATE
DE NAISSANCE])/365,24)-(Ent((Date()-[DATE DE NAISSANCE])/365,24)))*12) & "
mois"
--

Leyley39


"Fabien" a écrit :

Leyley39 a écrit :
> Merci 3stone pour ton aide mais, au risque de parraître nul, je ne sais pas
> où et comment me servir de ce code. J'ai essayer de l'intégrer dans un
> événement mais il y a toujours une erreur de compilation. Si mon champs se
> nomme [DATE DE NAISSANCE] et que je veux toujours que le calcul se fasse à
> partir de la date du jour (Date()), comment devrais-je présenter ca ? Et où
> le placer ?
>
> Function AgeX(dn As Date, dx As Date) As String
> 'Objectif: calcul de l'âge en années et mois pleins
> 'Arguments: dn = date de naissance, dx = date quelconque
> Dim y1 As Integer, y0 As Integer, m1 As Integer, m0 As Integer
> Dim d1 As Integer, d0 As Integer
> d1 = Day(dx)
> m1 = Month(dx)
> y1 = Year(dx)
> d0 = Day(dn)
> m0 = Month(dn)
> y0 = Year(dn)
> If d0 > d1 Then m0 = m0 + 1
> If m0 > m1 Then
> y0 = y0 + 1
> m1 = m1 + 12
> End If
> AgeX = (y1 - y0) & " ans, " & (m1 - m0) & " mois"
> End Function
Salut,
Normalement l'appel a cette fonction dans ton cas serait
Sur l'événement aprés mise a jour du champs Date de naissance, pour que
le resultat s'affiche dans une zone Zoneaffichage

Me.zoneAffichage=AgeX(me.[Date de Naissance],Date)

@+



Avatar
3stone
Salut,

"Leyley39"
[...]
| Moins compliquer que de faire un code.


| =(Ent((Date()-[DATE DE NAISSANCE])/365,24)) & " ans " & Ent((((Date()-[DATE
| DE NAISSANCE])/365,24)-(Ent((Date()-[DATE DE NAISSANCE])/365,24)))*12) & "
| mois"


C'est ton avis, mais que je ne le partage pas ;-)

Avec la fonction indiquée placée dans un module, tu mets simplement

= AgeMois([DateNaissance])

aussi bien dans une requête que dans une zone de texte,
sans devoir recopier et adapter.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)