Function AMJ(Day1 As Date, Day2 As Date) As String Dim years, months, days, m years = Year(Day2) - Year(Day1) If Month(Day1) > Month(Day2) Then years = years - 1 End If If Month(Day2) < Month(Day1) Then months = 12 - Month(Day1) + Month(Day2) Else months = Month(Day2) - Month(Day1) End If If Day(Day2) < Day(Day1) Then months = months - 1 If Month(Day2) = Month(Day1) Then years = years - 1 months = 11 End If End If days = Day(Day2) - Day(Day1) If days < 0 Then m = CInt(Month(Day2)) - 1 If m = 0 Then m = 12 Select Case m Case 1, 3, 5, 7, 8, 10, 12 days = 31 + days Case 4, 6, 9, 11 days = 30 + days Case 2 If (Year(Day2) Mod 4 = 0 And Year(Day2) _ Mod 100 <> 0) Or Year(Day2) Mod 400 = 0 Then days = 29 + days Else days = 28 + days End If End Select End If AMJ = CStr(years) + " ans " + CStr(months) _ + " mois et " + CStr(days) + " jours " End Function
Cette fonction se fout du singulier... ;0) Starwing
Merci beaucoup
AG
"Starwing" <ubik10@hotmail.com> a écrit dans le message de
news:%23LN6skpwEHA.1392@tk2msftngp13.phx.gbl...
Bon ben, tant qu'à faire:
En VBA?
Function AMJ(Day1 As Date, Day2 As Date) As String
Dim years, months, days, m
years = Year(Day2) - Year(Day1)
If Month(Day1) > Month(Day2) Then
years = years - 1
End If
If Month(Day2) < Month(Day1) Then
months = 12 - Month(Day1) + Month(Day2)
Else
months = Month(Day2) - Month(Day1)
End If
If Day(Day2) < Day(Day1) Then
months = months - 1
If Month(Day2) = Month(Day1) Then
years = years - 1
months = 11
End If
End If
days = Day(Day2) - Day(Day1)
If days < 0 Then
m = CInt(Month(Day2)) - 1
If m = 0 Then m = 12
Select Case m
Case 1, 3, 5, 7, 8, 10, 12
days = 31 + days
Case 4, 6, 9, 11
days = 30 + days
Case 2
If (Year(Day2) Mod 4 = 0 And Year(Day2) _
Mod 100 <> 0) Or Year(Day2) Mod 400 = 0 Then
days = 29 + days
Else
days = 28 + days
End If
End Select
End If
AMJ = CStr(years) + " ans " + CStr(months) _
+ " mois et " + CStr(days) + " jours "
End Function
Cette fonction se fout du singulier... ;0)
Starwing
Function AMJ(Day1 As Date, Day2 As Date) As String Dim years, months, days, m years = Year(Day2) - Year(Day1) If Month(Day1) > Month(Day2) Then years = years - 1 End If If Month(Day2) < Month(Day1) Then months = 12 - Month(Day1) + Month(Day2) Else months = Month(Day2) - Month(Day1) End If If Day(Day2) < Day(Day1) Then months = months - 1 If Month(Day2) = Month(Day1) Then years = years - 1 months = 11 End If End If days = Day(Day2) - Day(Day1) If days < 0 Then m = CInt(Month(Day2)) - 1 If m = 0 Then m = 12 Select Case m Case 1, 3, 5, 7, 8, 10, 12 days = 31 + days Case 4, 6, 9, 11 days = 30 + days Case 2 If (Year(Day2) Mod 4 = 0 And Year(Day2) _ Mod 100 <> 0) Or Year(Day2) Mod 400 = 0 Then days = 29 + days Else days = 28 + days End If End Select End If AMJ = CStr(years) + " ans " + CStr(months) _ + " mois et " + CStr(days) + " jours " End Function
Cette fonction se fout du singulier... ;0) Starwing
Starwing
Bonjour Av,
Oui Oui je l'ai essayé et elle fonctionne très bien, je l'ai mis en veilleuse d'ailleurs, ;0)
De plus pour revenir à ceci:
Si tu as 04/11/2004 en A1 ta fonction perso =AMJ(A1;AUJOURDHUI()) renvoie : 20 ans 0 mois et 0 jours
Chez moi, j'ai la forme AAAA/MM/JJ Et me retrourne : 0 ans 0 mois 0 jours...
Starwing
Bonjour Av,
Oui Oui je l'ai essayé et elle fonctionne très bien, je l'ai mis en
veilleuse d'ailleurs, ;0)
De plus pour revenir à ceci:
Si tu as 04/11/2004 en A1 ta fonction perso =AMJ(A1;AUJOURDHUI())
renvoie :
20 ans 0 mois et 0 jours
Chez moi, j'ai la forme AAAA/MM/JJ
Et me retrourne : 0 ans 0 mois 0 jours...
Oui Oui je l'ai essayé et elle fonctionne très bien, je l'ai mis en veilleuse d'ailleurs, ;0)
De plus pour revenir à ceci:
Si tu as 04/11/2004 en A1 ta fonction perso =AMJ(A1;AUJOURDHUI()) renvoie : 20 ans 0 mois et 0 jours
Chez moi, j'ai la forme AAAA/MM/JJ Et me retrourne : 0 ans 0 mois 0 jours...
Starwing
Misange
Mais si mais si u l'as dans ton excel, elle n'est pas documentée mais elle y est. Essaie ! tu trouveras plein de trucs dessus sur excelabo (tape datedif dans le oteur de recherche)
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 17:47:
La fonction DATEDIF est définie pour fins de compatiblité Lotus Je n'ai pas DATEDIF dans a version d'excel que j'utilise Ou puis-je la trouver?
Merci
AG
"Misange" a écrit dans le message de news:
Bonjour, La formule magique de ChrisV
http://www.excelabo.net/xl/dates.php#agecapitaine attention ne pas mettre d'espace ni de retour à la ligne...
=SI(ET(DATEDIF(Date_Naissance;AUJOURDHUI();"y")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")=0);0&" jour"; SI(DATEDIF(Date_Naissance;AUJOURDHUI();"y")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"y")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"y")>1;" ans ";" an ");"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"ym")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")&" mois ";"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"md")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"md")>1;" jours";" jour");""))
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 16:32:
Je cherche une fonction qui, à partir d'une date de naissance me
donnerait
l'age d'une personne
Je peux faire l'écart entre AJOURDHUI() et la date de naissance, ce qui
me
donne le nombre de jours et diviser le tout par 365
Il y a cependant un probleme avec les années bissextiles lorsque
aujourdhui
est trop près de la date d'anniversaire
Une idée quelqu'un
Merci
AG
Mais si mais si u l'as dans ton excel, elle n'est pas documentée mais
elle y est. Essaie !
tu trouveras plein de trucs dessus sur excelabo (tape datedif dans le
oteur de recherche)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 17:47:
La fonction DATEDIF est définie pour fins de compatiblité Lotus
Je n'ai pas DATEDIF dans a version d'excel que j'utilise
Ou puis-je la trouver?
Merci
AG
"Misange" <misange@devinez-ou.net> a écrit dans le message de
news:eUD5HXowEHA.1988@TK2MSFTNGP12.phx.gbl...
Bonjour,
La formule magique de ChrisV
http://www.excelabo.net/xl/dates.php#agecapitaine
attention ne pas mettre d'espace ni de retour à la ligne...
=SI(ET(DATEDIF(Date_Naissance;AUJOURDHUI();"y")=0;
DATEDIF(Date_Naissance;AUJOURDHUI();"ym")=0;
DATEDIF(Date_Naissance;AUJOURDHUI();"md")=0);0&" jour";
SI(DATEDIF(Date_Naissance;AUJOURDHUI();"y")<>0;
DATEDIF(Date_Naissance;AUJOURDHUI();"y")&SI(DATEDIF
(Date_Naissance;AUJOURDHUI();"y")>1;" ans ";" an
");"")
&SI(DATEDIF(Date_Naissance;AUJOURDHUI();"ym")<>0;
DATEDIF(Date_Naissance;AUJOURDHUI();"ym")&" mois ";"")
&SI(DATEDIF(Date_Naissance;AUJOURDHUI();"md")<>0;
DATEDIF(Date_Naissance;AUJOURDHUI();"md")&SI(DATEDIF
(Date_Naissance;AUJOURDHUI();"md")>1;" jours";"
jour");""))
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 16:32:
Je cherche une fonction qui, à partir d'une date de naissance me
donnerait
l'age d'une personne
Je peux faire l'écart entre AJOURDHUI() et la date de naissance, ce qui
me
donne le nombre de jours et diviser le tout par 365
Il y a cependant un probleme avec les années bissextiles lorsque
Mais si mais si u l'as dans ton excel, elle n'est pas documentée mais elle y est. Essaie ! tu trouveras plein de trucs dessus sur excelabo (tape datedif dans le oteur de recherche)
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 17:47:
La fonction DATEDIF est définie pour fins de compatiblité Lotus Je n'ai pas DATEDIF dans a version d'excel que j'utilise Ou puis-je la trouver?
Merci
AG
"Misange" a écrit dans le message de news:
Bonjour, La formule magique de ChrisV
http://www.excelabo.net/xl/dates.php#agecapitaine attention ne pas mettre d'espace ni de retour à la ligne...
=SI(ET(DATEDIF(Date_Naissance;AUJOURDHUI();"y")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")=0);0&" jour"; SI(DATEDIF(Date_Naissance;AUJOURDHUI();"y")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"y")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"y")>1;" ans ";" an ");"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"ym")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")&" mois ";"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"md")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"md")>1;" jours";" jour");""))
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 16:32:
Je cherche une fonction qui, à partir d'une date de naissance me
donnerait
l'age d'une personne
Je peux faire l'écart entre AJOURDHUI() et la date de naissance, ce qui
me
donne le nombre de jours et diviser le tout par 365
Il y a cependant un probleme avec les années bissextiles lorsque
aujourdhui
est trop près de la date d'anniversaire
Une idée quelqu'un
Merci
AG
AG
Tu as raison, j'avais fait une erreur en recopiant
Merci
AG
"Misange" a écrit dans le message de news:
Mais si mais si u l'as dans ton excel, elle n'est pas documentée mais elle y est. Essaie ! tu trouveras plein de trucs dessus sur excelabo (tape datedif dans le oteur de recherche)
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 17:47:
La fonction DATEDIF est définie pour fins de compatiblité Lotus Je n'ai pas DATEDIF dans a version d'excel que j'utilise Ou puis-je la trouver?
Merci
AG
"Misange" a écrit dans le message de news:
Bonjour, La formule magique de ChrisV
http://www.excelabo.net/xl/dates.php#agecapitaine attention ne pas mettre d'espace ni de retour à la ligne...
=SI(ET(DATEDIF(Date_Naissance;AUJOURDHUI();"y")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")=0);0&" jour"; SI(DATEDIF(Date_Naissance;AUJOURDHUI();"y")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"y")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"y")>1;" ans ";" an ");"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"ym")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")&" mois ";"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"md")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"md")>1;" jours";" jour");""))
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 16:32:
Je cherche une fonction qui, à partir d'une date de naissance me
donnerait
l'age d'une personne
Je peux faire l'écart entre AJOURDHUI() et la date de naissance, ce qui
me
donne le nombre de jours et diviser le tout par 365
Il y a cependant un probleme avec les années bissextiles lorsque
aujourdhui
est trop près de la date d'anniversaire
Une idée quelqu'un
Merci
AG
Tu as raison, j'avais fait une erreur en recopiant
Merci
AG
"Misange" <misange@devinez-ou.net> a écrit dans le message de
news:OzKjjoqwEHA.1988@TK2MSFTNGP12.phx.gbl...
Mais si mais si u l'as dans ton excel, elle n'est pas documentée mais
elle y est. Essaie !
tu trouveras plein de trucs dessus sur excelabo (tape datedif dans le
oteur de recherche)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 17:47:
La fonction DATEDIF est définie pour fins de compatiblité Lotus
Je n'ai pas DATEDIF dans a version d'excel que j'utilise
Ou puis-je la trouver?
Merci
AG
"Misange" <misange@devinez-ou.net> a écrit dans le message de
news:eUD5HXowEHA.1988@TK2MSFTNGP12.phx.gbl...
Bonjour,
La formule magique de ChrisV
http://www.excelabo.net/xl/dates.php#agecapitaine
attention ne pas mettre d'espace ni de retour à la ligne...
=SI(ET(DATEDIF(Date_Naissance;AUJOURDHUI();"y")=0;
DATEDIF(Date_Naissance;AUJOURDHUI();"ym")=0;
DATEDIF(Date_Naissance;AUJOURDHUI();"md")=0);0&" jour";
SI(DATEDIF(Date_Naissance;AUJOURDHUI();"y")<>0;
DATEDIF(Date_Naissance;AUJOURDHUI();"y")&SI(DATEDIF
(Date_Naissance;AUJOURDHUI();"y")>1;" ans ";" an
");"")
&SI(DATEDIF(Date_Naissance;AUJOURDHUI();"ym")<>0;
DATEDIF(Date_Naissance;AUJOURDHUI();"ym")&" mois ";"")
&SI(DATEDIF(Date_Naissance;AUJOURDHUI();"md")<>0;
DATEDIF(Date_Naissance;AUJOURDHUI();"md")&SI(DATEDIF
(Date_Naissance;AUJOURDHUI();"md")>1;" jours";"
jour");""))
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 16:32:
Je cherche une fonction qui, à partir d'une date de naissance me
donnerait
l'age d'une personne
Je peux faire l'écart entre AJOURDHUI() et la date de naissance, ce qui
me
donne le nombre de jours et diviser le tout par 365
Il y a cependant un probleme avec les années bissextiles lorsque
Tu as raison, j'avais fait une erreur en recopiant
Merci
AG
"Misange" a écrit dans le message de news:
Mais si mais si u l'as dans ton excel, elle n'est pas documentée mais elle y est. Essaie ! tu trouveras plein de trucs dessus sur excelabo (tape datedif dans le oteur de recherche)
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 17:47:
La fonction DATEDIF est définie pour fins de compatiblité Lotus Je n'ai pas DATEDIF dans a version d'excel que j'utilise Ou puis-je la trouver?
Merci
AG
"Misange" a écrit dans le message de news:
Bonjour, La formule magique de ChrisV
http://www.excelabo.net/xl/dates.php#agecapitaine attention ne pas mettre d'espace ni de retour à la ligne...
=SI(ET(DATEDIF(Date_Naissance;AUJOURDHUI();"y")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")=0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")=0);0&" jour"; SI(DATEDIF(Date_Naissance;AUJOURDHUI();"y")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"y")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"y")>1;" ans ";" an ");"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"ym")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"ym")&" mois ";"") &SI(DATEDIF(Date_Naissance;AUJOURDHUI();"md")<>0; DATEDIF(Date_Naissance;AUJOURDHUI();"md")&SI(DATEDIF (Date_Naissance;AUJOURDHUI();"md")>1;" jours";" jour");""))
Misange migrateuse http://www.excelabo.net mail : http://cerbermail.com/?k5Q8Dh2mta
on 04/11/2004 16:32:
Je cherche une fonction qui, à partir d'une date de naissance me
donnerait
l'age d'une personne
Je peux faire l'écart entre AJOURDHUI() et la date de naissance, ce qui
me
donne le nombre de jours et diviser le tout par 365
Il y a cependant un probleme avec les années bissextiles lorsque