OVH Cloud OVH Cloud

Jours en années et mois...???

18 réponses
Avatar
Jeepy
Bonjour à tous,

Voici mon petite souci...

J'ai 2 dates dont je calcul l'espacement en jours dans une autre cellule, je
voudrais que cet espacement m'indique le nombre de mois, semaines et
jours...

Quelqu'un a-t-il une idée...???

D'avance, un grand merci à tous.

10 réponses

1 2
Avatar
Argyronet
Bonjour,

Vous pouvez mettre en place une fonction en VBA (à peaufiner si besoin) :
Function ESPACEMENT(ByVal Date1 As Date, ByVal Date2 As Date) As String
Dim strEspacement As String
Dim strEcartSemaines As String
Dim strEcartMois As String
Dim strEcartJours As String
Dim vntTemp As Variant

On Error Resume Next

vntTemp = DateDiff("ww", Date1, Date2)
strEcartSemaines = Trim(Str(vntTemp)) & IIf((vntTemp) = 1, " semaine", "
semaines")
vntTemp = DateDiff("d", Date1, Date2)
strEcartJours = Trim(Str(vntTemp)) & IIf((vntTemp) = 1, " jour", " jours")
vntTemp = DateDiff("m", Date1, Date2)
strEcartMois = Trim(Str(vntTemp)) & " mois"
strEspacement = strEcartSemaines & " " & strEcartJours & " " & strEcartMois

ESPACEMENT = strEspacement
End Function

Et dans votre cellule tapez par exemple :
=PERSO.XLS!ESPACEMENT(C5;E5)
--
Argy { MVP }
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour à tous,

Voici mon petite souci...

J'ai 2 dates dont je calcul l'espacement en jours dans une autre cellule, je
voudrais que cet espacement m'indique le nombre de mois, semaines et
jours...

Quelqu'un a-t-il une idée...???

D'avance, un grand merci à tous.





Avatar
papou
Bonjour
chez Misange il y a tout ce qu'il faut :
http://www.excelabo.net/xl/dates.php#agecapitaine

Cordialement
Pascal

"Jeepy" a écrit dans le message de news:
%
Bonjour à tous,

Voici mon petite souci...

J'ai 2 dates dont je calcul l'espacement en jours dans une autre cellule,
je
voudrais que cet espacement m'indique le nombre de mois, semaines et
jours...

Quelqu'un a-t-il une idée...???

D'avance, un grand merci à tous.




Avatar
AV
Heu.j'émets de très fortes réserves quant aux résultats..
Exemple
A1 = 31/12/2005
B1 = 02/01/2006
Résultat de ta fonction ESPACEMENT : 1 semaine 2 jours 1 mois
Etonnant non ?
;-)

PS : la notion de semaine étant strictement définie (norme iso), la
question demanderait qques éclaircissements de la part du demandeur.
PS bis : la fonction vba "DateDiff" a quelques lacunes...
AV
Avatar
Argyronet
Oui, c'est vrai que DateDiff() est particulier tout comme toutes fonctions
d'exploitation qui traitent des semaines notamment NO.SEMAINE().
Mais le calendrier y est pour beaucoup notamment avec les années à 53
semaines...

Merci de l'avoir soulevé...
--
Argy { MVP }
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Heu.j'émets de très fortes réserves quant aux résultats..
Exemple
A1 = 31/12/2005
B1 = 02/01/2006
Résultat de ta fonction ESPACEMENT : 1 semaine 2 jours 1 mois
Etonnant non ?
;-)

PS : la notion de semaine étant strictement définie (norme iso), la
question demanderait qques éclaircissements de la part du demandeur.
PS bis : la fonction vba "DateDiff" a quelques lacunes...
AV





Avatar
Jacky
Bonsoir,
Ceci peut-être
Avec date de départ en A1 et date de fin en B1

=TEXTE(DATEDIF(A1;B1;"m");"[>]0"" mois
"";")&TEXTE(ENT(DATEDIF(A1;B1;"md")/7);"[>1]0"" semaines "";[>]""1 semaine
"";")&TEXTE(DATEDIF(A1;B1;"md")-(ENT(DATEDIF(A1;B1;"md")/7)*7);"[>1]0""
jours"";[>]""1 jour"";")

A saisir sur une ligne
Salutations
JJ

"Jeepy" a écrit dans le message de
news:%
Bonjour à tous,

Voici mon petite souci...

J'ai 2 dates dont je calcul l'espacement en jours dans une autre cellule,
je

voudrais que cet espacement m'indique le nombre de mois, semaines et
jours...

Quelqu'un a-t-il une idée...???

D'avance, un grand merci à tous.




Avatar
AV
| Mais le calendrier y est pour beaucoup notamment avec les années à 53
| semaines...

Ben... le calendrier n'est que l'expression de la norme iso : une semaine a
toujours 7 jours et elle commence toujours un lundi.

AV
Avatar
AV
Salut Jacky,

Le problème est de savoir s'il est raisonnable de considérer une semaine comme
égale à 1 fois 7 jours ! ;-)
Je pense que la question ne peut pas se poser en ces termes puisqu'une une même
semaine peut être à cheval sur 2 mois
Bon... comme le questionneur n'est pas très loquace et qu'il s'est peut-être
planté dans la formulation (question différente entre le titre de son fil et son
contenu).....

AV
Avatar
Jacky
Bonsoir Alain

Oui c'est vrai.....
Attendons que Jeepy se manifeste

JJ

"AV" a écrit dans le message de
news:
Salut Jacky,

Le problème est de savoir s'il est raisonnable de considérer une semaine
comme

égale à 1 fois 7 jours ! ;-)
Je pense que la question ne peut pas se poser en ces termes puisqu'une une
même

semaine peut être à cheval sur 2 mois
Bon... comme le questionneur n'est pas très loquace et qu'il s'est
peut-être

planté dans la formulation (question différente entre le titre de son fil
et son

contenu).....

AV




Avatar
Argyronet
Oui, d'accord avec ça ;
Mais, tape 31/12/1999 dans en cellule C4 et =NO.SEMAINE(C4;2) et j'obtiens
bien bien 53... Et en plus, cette semaine 53 ne fait que 5 jours si tu mets
2 et 6 jours si tu mets 1 pour la méthode !!!
Aussi curieux que le comportement de DateDiff si tu ne le complémentes pas
comme il se doit. J'avais d'ailleurs précisé "A peaufiner..."
--
Argy { MVP }
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



| Mais le calendrier y est pour beaucoup notamment avec les années à 53
| semaines...

Ben... le calendrier n'est que l'expression de la norme iso : une semaine a
toujours 7 jours et elle commence toujours un lundi.

AV





Avatar
AV
| Mais, tape 31/12/1999 dans en cellule C4 et =NO.SEMAINE(C4;2) et j'obtiens
| bien bien 53... Et en plus, cette semaine 53 ne fait que 5 jours si tu mets
| 2 et 6 jours si tu mets 1 pour la méthode !!!

Ben justement...
C'est parceque la fonction NO.SEMAINE, "est pas de chez nous": elle est à
la sauce US !
Pour les amerlocks le 1 janvier (que ce soit dimanche, jeudi... lundi.)
est toujours le 1° jour de la semaine N°1 de l'année !
La norme ISO européenne impose qu'une semaine compte TOUJOURS 7 jours et
commence TOUJOURS un lundi !
En fait, dans ton exemple, le 31/12/1999, selon notre norme n'est pas en
semaine 53 mais en semaine 52 !
Parmi quelques dizaines de formules, une (validité --> 2104 - d'ici là on
peut espérer que MS aura enfin pondu la fonction intégrée ! -) pour avoir le N°
de semaine norme ISO :
=ENT(MOD(ENT((A1-2)/7)+0.6;52+5/28))+1

Une autre avec la fonction vba "DatePart" un peu "aménagée" :

Function NUMSEM_ISO(cel As Range)
If Day(cel) = 2 And Month(cel) = 1 And Year(cel) Mod 400 = 101 Then
NUMSEM_ISO = 52: Exit Function
NUMSEM_ISO = IIf(Weekday(cel) = 2 And Month(ladate) = 12 And Day(cel) >
28, 1, DatePart("ww", cel, 2, 2))
End Function

AV
1 2