GNT sans publicité, site mobile, fonctionnalitées exclusives...

Calculer l'âge depuis une date de naissance dans une macro

Le
Jacques ELKINE
Bonjour,

Je voudrais pouvoir transformer sur word, par une simple macro, une date
de naissance saisie dans le texte par l'âge correspondant.

Je coince encore. Lorsque je contrôle, l'âge affiché ne change pas au
jour près, lorsque je saisis successivement des dates de naissance
proches de la date du jour (Date).

Ci-dessous ma macro, dans son état actuel :

Sub AGE()
' Age Macro
' Macro enregistrée le 30/04/2006
' Sélectionne une date qu'on vient de saisir dans le texte
' (10 caractères) place le contenu dans Datenaiss
Selection.MoveLeft Unit:=wdCharacter, Count:, Extend:=wdExtend
Dim DateNaiss As Date
Dim AgePat As Variant
DateNaiss = Selection
AgePat = DateDiff("yy", DateNaiss, Now)
MsgBox (AgePat)

' Suit ci-dessous la suite du projet qui inscrira l'âge
' Efface la date de naissance dans le texte et la remplace
' par l'âge calculé
' Delete.Selection
' ReplaceSelection = True
' Selection.TypeText (AgePat)
End Sub

Merci d'avance pour toute contribution.
Bien cordialement.
Lire les 11 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilbert
Le #1214934
Bonjour,

Tu ne calcule l'âge que sur l'année

Essaie avec
Age = DateDiff("yyyy", DateNaissance, Date) + (Format(Date, "mmdd") <
Format(DateNaissance, "mmdd"))

Gilbert

"Jacques ELKINE" news:
Bonjour,

Je voudrais pouvoir transformer sur word, par une simple macro, une date
de naissance saisie dans le texte par l'âge correspondant.

Je coince encore. Lorsque je contrôle, l'âge affiché ne change pas au
jour près, lorsque je saisis successivement des dates de naissance
proches de la date du jour (Date).

Ci-dessous ma macro, dans son état actuel ... :

Sub AGE()
' Age Macro
' Macro enregistrée le 30/04/2006
' Sélectionne une date qu'on vient de saisir dans le texte
' (10 caractères) place le contenu dans Datenaiss
Selection.MoveLeft Unit:=wdCharacter, Count:, Extend:=wdExtend
Dim DateNaiss As Date
Dim AgePat As Variant
DateNaiss = Selection
AgePat = DateDiff("yy", DateNaiss, Now)
MsgBox (AgePat)

' Suit ci-dessous la suite du projet qui inscrira l'âge
' Efface la date de naissance dans le texte et la remplace
' par l'âge calculé
' Delete.Selection
' ReplaceSelection = True
' Selection.TypeText (AgePat)
End Sub

Merci d'avance pour toute contribution.
Bien cordialement.


Geo
Le #1214932

Tu ne calcule l'âge que sur l'année

Essaie avec
Age = DateDiff("yyyy", DateNaissance, Date) + (Format(Date, "mmdd") <
Format(DateNaissance, "mmdd"))


Joli !

--
A+

Jacques ELKINE
Le #1214930
Bonjour,
...
Essaie avec
Age = DateDiff("yyyy", DateNaissance, Date) + (Format(Date, "mmdd") <
Format(DateNaissance, "mmdd"))
...


Merci ! Quelle rapidité !
Mais le résultat donne 107 ans lorsque je prends ma date de naissance
(07/07/1945 C'est déjà beaucoup à mon goût... ;°))

Peut-être ai-je fait une erreur. J'ai pourtant copié-collé la ligne de
macro et remis AgePat au lieu d'Age comme variable.

Précisions : je suis sous WinXp Pro et Word 2002 SP3

Merci pour toute autre contribution.

Cordialement.
Jacques ELKINE

"Jacques ELKINE" news:
Bonjour,

Je voudrais pouvoir transformer sur word, par une simple macro, une date
de naissance saisie dans le texte par l'âge correspondant.

Je coince encore. Lorsque je contrôle, l'âge affiché ne change pas au
jour près, lorsque je saisis successivement des dates de naissance
proches de la date du jour (Date).

Ci-dessous ma macro, dans son état actuel ... :

Sub AGE()
' Age Macro
' Macro enregistrée le 30/04/2006
' Sélectionne une date qu'on vient de saisir dans le texte
' (10 caractères) place le contenu dans Datenaiss
Selection.MoveLeft Unit:=wdCharacter, Count:, Extend:=wdExtend
Dim DateNaiss As Date
Dim AgePat As Variant
DateNaiss = Selection
AgePat = DateDiff("yy", DateNaiss, Now)
MsgBox (AgePat)

' Suit ci-dessous la suite du projet qui inscrira l'âge
' Efface la date de naissance dans le texte et la remplace
' par l'âge calculé
' Delete.Selection
' ReplaceSelection = True
' Selection.TypeText (AgePat)
End Sub

Merci d'avance pour toute contribution.
Bien cordialement.






Jacques ELKINE
Le #1214929
MILLE EXCUSES !!! (par rapport au message précédedent où je croyais que
ça ne marchait pas....)

Ça marche super !!! C'est moi qui n'avais pas mis à jour la variable
Datenaiss devenue Datenaissance dans votre proposition.

Mille fois merci !

Je me permettrai d'en demander d'autres, si je ne gène pas...

Suggestion : une réponse comme celel que j'ai reçue mériterait d'être
cataloguée pour les autres utilisateurs. Je finis ma macro et je la
dépose sur les news.

Bien cordialement.
Jacquezs ELKINE
Tisane
Le #1214801
Bonjour Jacques,

Ça marche super !!! C'est moi qui n'avais pas mis à jour la variable
Datenaiss devenue Datenaissance dans votre proposition.
[...]

Suggestion : une réponse comme celel que j'ai reçue mériterait d'être
cataloguée pour les autres utilisateurs. Je finis ma macro et je la dépose
sur les news.


Ne t'inquiète pas, la réponse que tu as reçue est issue, telle quelle (d'où
le "DateNaissance" au lieu de ton champ), du forum Access.
Elle y est cataloguée depuis longtemps car la question que tu as posée l'est
plus souvent dans le contexte d'une base de données ou d'une feuille de
calcul que d'un traitement de texte.
Cela étant, ce fil de discussion a le mérite de montrer qu'on peut utiliser
Word à autre chose qu'à du pur traitement de texte, et ta macro y sera donc
la bienvenue.

--
Tisane

Publicité
Suivre les réponses
Poster une réponse
Anonyme