J'avais posé une question en avril de cette année concernnat un calcul
permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La
fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une
personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref
J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter
tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé ...
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier
perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans
Excel...
Function TEMPSECOULE(Debut, Fin) As String
Dim ValAnnée As Integer, ValMois As Integer
Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut)
ValMois = Month(Fin) - Month(Debut)
If ValMois < 0 Then
ValAnnée = ValAnnée - 1
ValMois = ValMois + 12
End If
ValJour1 = Day(Debut)
ValJour2 = Day(Fin)
ValJour = ValJour2 - ValJour1
If ValJour < 0 Then
ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1 +
ValJour2
If ValMois > 0 Then
ValMois = ValMois - 1
Else
ValAnnée = ValAnnée - 1
ValMois = 11
End If
End If
'les tests qui suivent ne servent qu'aux accrords de pluriel !!
If ValAnnée > 1 Then
antexte = " ans "
Else
antexte = " an "
End If
If ValJour > 1 Then
jrtexte = " jours"
Else
jrtexte = " jour"
End If
TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte
End Function
J'avais posé une question en avril de cette année concernnat un calcul permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé ...
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans Excel...
Function TEMPSECOULE(Debut, Fin) As String Dim ValAnnée As Integer, ValMois As Integer Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut) ValMois = Month(Fin) - Month(Debut) If ValMois < 0 Then ValAnnée = ValAnnée - 1 ValMois = ValMois + 12 End If ValJour1 = Day(Debut) ValJour2 = Day(Fin) ValJour = ValJour2 - ValJour1 If ValJour < 0 Then ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1 +
ValJour2 If ValMois > 0 Then ValMois = ValMois - 1 Else ValAnnée = ValAnnée - 1 ValMois = 11 End If End If 'les tests qui suivent ne servent qu'aux accrords de pluriel !! If ValAnnée > 1 Then antexte = " ans " Else antexte = " an " End If If ValJour > 1 Then jrtexte = " jours" Else jrtexte = " jour" End If TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte End Function
Bonjour
Date de début en a1, date de fin b1
'--------
'Sur une seule ligne
"Cervolent" <Cervolent@discussions.microsoft.com> a écrit dans le message de
news:6C976AA8-735E-4E0A-A0EF-07230D80B6F7@microsoft.com...
J'avais posé une question en avril de cette année concernnat un calcul
permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La
fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une
personne (dont je ne citerais pas le nom avait même répondu un peu
violemment
à mon problème ...) bref
J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter
tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé
...
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier
perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans
Excel...
Function TEMPSECOULE(Debut, Fin) As String
Dim ValAnnée As Integer, ValMois As Integer
Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut)
ValMois = Month(Fin) - Month(Debut)
If ValMois < 0 Then
ValAnnée = ValAnnée - 1
ValMois = ValMois + 12
End If
ValJour1 = Day(Debut)
ValJour2 = Day(Fin)
ValJour = ValJour2 - ValJour1
If ValJour < 0 Then
ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1
+
ValJour2
If ValMois > 0 Then
ValMois = ValMois - 1
Else
ValAnnée = ValAnnée - 1
ValMois = 11
End If
End If
'les tests qui suivent ne servent qu'aux accrords de pluriel !!
If ValAnnée > 1 Then
antexte = " ans "
Else
antexte = " an "
End If
If ValJour > 1 Then
jrtexte = " jours"
Else
jrtexte = " jour"
End If
TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte
End Function
J'avais posé une question en avril de cette année concernnat un calcul permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé ...
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans Excel...
Function TEMPSECOULE(Debut, Fin) As String Dim ValAnnée As Integer, ValMois As Integer Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut) ValMois = Month(Fin) - Month(Debut) If ValMois < 0 Then ValAnnée = ValAnnée - 1 ValMois = ValMois + 12 End If ValJour1 = Day(Debut) ValJour2 = Day(Fin) ValJour = ValJour2 - ValJour1 If ValJour < 0 Then ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1 +
ValJour2 If ValMois > 0 Then ValMois = ValMois - 1 Else ValAnnée = ValAnnée - 1 ValMois = 11 End If End If 'les tests qui suivent ne servent qu'aux accrords de pluriel !! If ValAnnée > 1 Then antexte = " ans " Else antexte = " an " End If If ValJour > 1 Then jrtexte = " jours" Else jrtexte = " jour" End If TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte End Function
Cervolent
C'est bon Jacky mais je me vois mal recréer cette formule à chaque fois qu'une personne me demande de calculer pour son établissement les écarts de dates d'entrée en service et fin de service. (nous avons environ 150 etablissements différents. Je reste sur ma méthode ... j'espère que tu m'en voudra pas ;-))
Bonjour Date de début en a1, date de fin b1 '-------- 'Sur une seule ligne
J'avais posé une question en avril de cette année concernnat un calcul permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé ....
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans Excel...
Function TEMPSECOULE(Debut, Fin) As String Dim ValAnnée As Integer, ValMois As Integer Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut) ValMois = Month(Fin) - Month(Debut) If ValMois < 0 Then ValAnnée = ValAnnée - 1 ValMois = ValMois + 12 End If ValJour1 = Day(Debut) ValJour2 = Day(Fin) ValJour = ValJour2 - ValJour1 If ValJour < 0 Then ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1 +
ValJour2 If ValMois > 0 Then ValMois = ValMois - 1 Else ValAnnée = ValAnnée - 1 ValMois = 11 End If End If 'les tests qui suivent ne servent qu'aux accrords de pluriel !! If ValAnnée > 1 Then antexte = " ans " Else antexte = " an " End If If ValJour > 1 Then jrtexte = " jours" Else jrtexte = " jour" End If TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte End Function
C'est bon Jacky mais je me vois mal recréer cette formule à chaque fois
qu'une personne me demande de calculer pour son établissement les écarts de
dates d'entrée en service et fin de service. (nous avons environ 150
etablissements différents.
Je reste sur ma méthode ... j'espère que tu m'en voudra pas ;-))
Bonjour
Date de début en a1, date de fin b1
'--------
'Sur une seule ligne
"Cervolent" <Cervolent@discussions.microsoft.com> a écrit dans le message de
news:6C976AA8-735E-4E0A-A0EF-07230D80B6F7@microsoft.com...
J'avais posé une question en avril de cette année concernnat un calcul
permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La
fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une
personne (dont je ne citerais pas le nom avait même répondu un peu
violemment
à mon problème ...) bref
J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter
tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé
....
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier
perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans
Excel...
Function TEMPSECOULE(Debut, Fin) As String
Dim ValAnnée As Integer, ValMois As Integer
Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut)
ValMois = Month(Fin) - Month(Debut)
If ValMois < 0 Then
ValAnnée = ValAnnée - 1
ValMois = ValMois + 12
End If
ValJour1 = Day(Debut)
ValJour2 = Day(Fin)
ValJour = ValJour2 - ValJour1
If ValJour < 0 Then
ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1
+
ValJour2
If ValMois > 0 Then
ValMois = ValMois - 1
Else
ValAnnée = ValAnnée - 1
ValMois = 11
End If
End If
'les tests qui suivent ne servent qu'aux accrords de pluriel !!
If ValAnnée > 1 Then
antexte = " ans "
Else
antexte = " an "
End If
If ValJour > 1 Then
jrtexte = " jours"
Else
jrtexte = " jour"
End If
TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte
End Function
C'est bon Jacky mais je me vois mal recréer cette formule à chaque fois qu'une personne me demande de calculer pour son établissement les écarts de dates d'entrée en service et fin de service. (nous avons environ 150 etablissements différents. Je reste sur ma méthode ... j'espère que tu m'en voudra pas ;-))
Bonjour Date de début en a1, date de fin b1 '-------- 'Sur une seule ligne
J'avais posé une question en avril de cette année concernnat un calcul permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé ....
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans Excel...
Function TEMPSECOULE(Debut, Fin) As String Dim ValAnnée As Integer, ValMois As Integer Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut) ValMois = Month(Fin) - Month(Debut) If ValMois < 0 Then ValAnnée = ValAnnée - 1 ValMois = ValMois + 12 End If ValJour1 = Day(Debut) ValJour2 = Day(Fin) ValJour = ValJour2 - ValJour1 If ValJour < 0 Then ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1 +
ValJour2 If ValMois > 0 Then ValMois = ValMois - 1 Else ValAnnée = ValAnnée - 1 ValMois = 11 End If End If 'les tests qui suivent ne servent qu'aux accrords de pluriel !! If ValAnnée > 1 Then antexte = " ans " Else antexte = " an " End If If ValJour > 1 Then jrtexte = " jours" Else jrtexte = " jour" End If TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte End Function
Jacky
Re.. ... j'espère que tu m'en voudra pas ;-)) Si peu, si peu... ;o)) JJ
"Cervolent" a écrit dans le message de news:
C'est bon Jacky mais je me vois mal recréer cette formule à chaque fois qu'une personne me demande de calculer pour son établissement les écarts de
dates d'entrée en service et fin de service. (nous avons environ 150 etablissements différents. Je reste sur ma méthode ... j'espère que tu m'en voudra pas ;-))
Bonjour Date de début en a1, date de fin b1 '-------- 'Sur une seule ligne
=SI(DATEDIF(A1;B1;"y"); " "&DATEDIF(A1;B1;"y")&" an"&SI(ABS(ANNEE(B1)-ANNEE(A1))>1;"s ";" ");"")&DATEDIF(A1;B1;"ym")&" mois
J'avais posé une question en avril de cette année concernnat un calcul permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La
fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une
personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter
tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé
....
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans
Excel...
Function TEMPSECOULE(Debut, Fin) As String Dim ValAnnée As Integer, ValMois As Integer Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut) ValMois = Month(Fin) - Month(Debut) If ValMois < 0 Then ValAnnée = ValAnnée - 1 ValMois = ValMois + 12 End If ValJour1 = Day(Debut) ValJour2 = Day(Fin) ValJour = ValJour2 - ValJour1 If ValJour < 0 Then ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1
+
ValJour2 If ValMois > 0 Then ValMois = ValMois - 1 Else ValAnnée = ValAnnée - 1 ValMois = 11 End If End If 'les tests qui suivent ne servent qu'aux accrords de pluriel !! If ValAnnée > 1 Then antexte = " ans " Else antexte = " an " End If If ValJour > 1 Then jrtexte = " jours" Else jrtexte = " jour" End If TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte
End Function
Re..
... j'espère que tu m'en voudra pas ;-))
Si peu, si peu...
;o))
JJ
"Cervolent" <Cervolent@discussions.microsoft.com> a écrit dans le message de
news:17F8BB15-E767-4CED-9871-0C5CB3CB15E9@microsoft.com...
C'est bon Jacky mais je me vois mal recréer cette formule à chaque fois
qu'une personne me demande de calculer pour son établissement les écarts
de
dates d'entrée en service et fin de service. (nous avons environ 150
etablissements différents.
Je reste sur ma méthode ... j'espère que tu m'en voudra pas ;-))
Bonjour
Date de début en a1, date de fin b1
'--------
'Sur une seule ligne
=SI(DATEDIF(A1;B1;"y"); " "&DATEDIF(A1;B1;"y")&"
an"&SI(ABS(ANNEE(B1)-ANNEE(A1))>1;"s ";" ");"")&DATEDIF(A1;B1;"ym")&"
mois
J'avais posé une question en avril de cette année concernnat un calcul
permettant de trouver le nombre d'année, mois, jour séparant 2 dates.
La
fonction Datedif n'avais pas donnée le résultat escompté à ma demande.
Une
personne (dont je ne citerais pas le nom avait même répondu un peu
violemment
à mon problème ...) bref
J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire
profiter
tout le monde ... C'est beaucoup plus court que ce qui a pu m'être
proposé
....
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier
perso.xls de façon à s'en servir dans n'importe quel fichier ouvert
dans
Excel...
Function TEMPSECOULE(Debut, Fin) As String
Dim ValAnnée As Integer, ValMois As Integer
Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut)
ValMois = Month(Fin) - Month(Debut)
If ValMois < 0 Then
ValAnnée = ValAnnée - 1
ValMois = ValMois + 12
End If
ValJour1 = Day(Debut)
ValJour2 = Day(Fin)
ValJour = ValJour2 - ValJour1
If ValJour < 0 Then
ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) -
ValJour1
+
ValJour2
If ValMois > 0 Then
ValMois = ValMois - 1
Else
ValAnnée = ValAnnée - 1
ValMois = 11
End If
End If
'les tests qui suivent ne servent qu'aux accrords de pluriel !!
If ValAnnée > 1 Then
antexte = " ans "
Else
antexte = " an "
End If
If ValJour > 1 Then
jrtexte = " jours"
Else
jrtexte = " jour"
End If
TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour &
jrtexte
Re.. ... j'espère que tu m'en voudra pas ;-)) Si peu, si peu... ;o)) JJ
"Cervolent" a écrit dans le message de news:
C'est bon Jacky mais je me vois mal recréer cette formule à chaque fois qu'une personne me demande de calculer pour son établissement les écarts de
dates d'entrée en service et fin de service. (nous avons environ 150 etablissements différents. Je reste sur ma méthode ... j'espère que tu m'en voudra pas ;-))
Bonjour Date de début en a1, date de fin b1 '-------- 'Sur une seule ligne
=SI(DATEDIF(A1;B1;"y"); " "&DATEDIF(A1;B1;"y")&" an"&SI(ABS(ANNEE(B1)-ANNEE(A1))>1;"s ";" ");"")&DATEDIF(A1;B1;"ym")&" mois
J'avais posé une question en avril de cette année concernnat un calcul permettant de trouver le nombre d'année, mois, jour séparant 2 dates. La
fonction Datedif n'avais pas donnée le résultat escompté à ma demande. Une
personne (dont je ne citerais pas le nom avait même répondu un peu violemment
à mon problème ...) bref J'ai trouvé ce que je recherche depuis, aussi je tiens à en faire profiter
tout le monde ... C'est beaucoup plus court que ce qui a pu m'être proposé
....
Il s'agit d'une fonction VBA EXCEL à placer dans un module du fichier perso.xls de façon à s'en servir dans n'importe quel fichier ouvert dans
Excel...
Function TEMPSECOULE(Debut, Fin) As String Dim ValAnnée As Integer, ValMois As Integer Dim ValJour As Integer, ValJour1 As Integer, ValJour2 As Integer
ValAnnée = Year(Fin) - Year(Debut) ValMois = Month(Fin) - Month(Debut) If ValMois < 0 Then ValAnnée = ValAnnée - 1 ValMois = ValMois + 12 End If ValJour1 = Day(Debut) ValJour2 = Day(Fin) ValJour = ValJour2 - ValJour1 If ValJour < 0 Then ValJour = Day(DateSerial(Year(Debut), Month(Debut) + 1, 0)) - ValJour1
+
ValJour2 If ValMois > 0 Then ValMois = ValMois - 1 Else ValAnnée = ValAnnée - 1 ValMois = 11 End If End If 'les tests qui suivent ne servent qu'aux accrords de pluriel !! If ValAnnée > 1 Then antexte = " ans " Else antexte = " an " End If If ValJour > 1 Then jrtexte = " jours" Else jrtexte = " jour" End If TEMPSECOULE = ValAnnée & antexte & ValMois & " mois " & ValJour & jrtexte
End Function
AV
Une formule (LL) :
=SUPPRESPACE(SI(Fin-Déb;TEXTE(DATEDIF(Déb;Fin;"y");"[>1]0"" ans"";[>]""1 an"";")&TEXTE(DATEDIF(Déb;Fin;"ym");"[>] 0"" mois ""; ")&TEXTE(DATEDIF(Déb;Fin;"md");"[>1]0"" jours"";[>]""1 jour"";");"0 jour"))
Une fonction perso issue d'icelle ? Function DATDIF(Déb As Date, Fin As Date) DATDIF = Evaluate("trim(if(" & Fin * 1 & "-" & Déb * 1 & ",text(datedif(" & Déb * 1 & "," & Fin * 1 & ",""y""),""[>1]0"""" ans"""";[>]""""1 an"""";"")&text(datedif(" & Déb * 1 & "," & Fin * 1 & ",""ym""),""[>] 0"""" mois """"; "")&text(datedif(" & Déb * 1 & "," & Fin * 1 & ",""md""),""[>1]0"""" jours"""";[>]""""1 jour"""";""),""0 jour""))") End Function
AV
Une formule (LL) :
=SUPPRESPACE(SI(Fin-Déb;TEXTE(DATEDIF(Déb;Fin;"y");"[>1]0"" ans"";[>]""1
an"";")&TEXTE(DATEDIF(Déb;Fin;"ym");"[>] 0"" mois "";
")&TEXTE(DATEDIF(Déb;Fin;"md");"[>1]0"" jours"";[>]""1 jour"";");"0 jour"))
Une fonction perso issue d'icelle ?
Function DATDIF(Déb As Date, Fin As Date)
DATDIF = Evaluate("trim(if(" & Fin * 1 & "-" & Déb * 1 & ",text(datedif(" & Déb
* 1 & "," & Fin * 1 & ",""y""),""[>1]0"""" ans"""";[>]""""1
an"""";"")&text(datedif(" & Déb * 1 & "," & Fin * 1 & ",""ym""),""[>] 0"""" mois
""""; "")&text(datedif(" & Déb * 1 & "," & Fin * 1 & ",""md""),""[>1]0""""
jours"""";[>]""""1 jour"""";""),""0 jour""))")
End Function