[ RESOLU ] Nbre années, nbre mois et nbre jours entre deux dates

sdf34

XLDnaute Nouveau
Bonjour à toutes et tous,

Voilà ma question : J'ai une cellule avec la date d'aujourd'hui (=AUJOURDHUI()) par exemple A2
J'ai en A1 une date fixe (par exemple 18/06/2011)
Est-il possible avec une formule en A3 d'avoir le nbre d'années, de mois et de jours écoulés entre ces deux date,
dans le format " 2 ans, 10 mois et 4 jours"
J'ai essayé un tas de formule mais sans succès.

Merci à vous de vos prochaines réponses

Bien à vous
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Nbre années, nbre mois et nbre jours entre deux dates

Bonjour, sdf34.

Notre ami Roger nous dit (entre autres), avec la date de début en A1, la date de fin en B1, et pour éviter Datedif qui n'en fait qu'à sa tête : :
= TEXTE(ENT((12*(ANNEE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-ANNEE(A1))+MOIS(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-MOIS(A1)
-(MOIS.DECALER(A1;12*(ANNEE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-ANNEE(A1))+MOIS(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-MOIS(A1))
>=(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))))/12);"[>=2]0"" ans, "";0"" an, """)&
MOD(12*(ANNEE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-ANNEE(A1))+MOIS(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-MOIS(A1)
-(MOIS.DECALER(A1;12*(ANNEE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-ANNEE(A1))+MOIS(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-MOIS(A1))
>=(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0)));12)&" mois, "&
TEXTE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0)
-MOIS.DECALER(ENT(A1);12*(ANNEE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-ANNEE(A1))+MOIS(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-MOIS(A1)
-(MOIS.DECALER(A1;12*(ANNEE(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-ANNEE(A1))+MOIS(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))-MOIS(A1))
>=(ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0))))-1;"[>=2]0"" jours"";0"" jour""")

C'est quand même pas compliqué ...
:)
 

sdf34

XLDnaute Nouveau
Re : Nbre années, nbre mois et nbre jours entre deux dates

Bonjour karakoman1 merci pour le lien d'une discution relative à ma demande cela pourra m'être utile.
Bonjour Victor21, effectivement c'est pas compliqué :confused: pourquoi n'y ai-je pas pensé avant :mad:
Sans rire, quelle formule ! ET ELLE FONCTIONNE EN PLUS ! Merci beaucoup à toi.
A bientôt
 

Victor21

XLDnaute Barbatruc
Re : Nbre années, nbre mois et nbre jours entre deux dates

Re,

Bonjour karakoman1 merci pour le lien d'une discution relative à ma demande cela pourra m'être utile.
Bonjour Victor21, effectivement c'est pas compliqué :confused: pourquoi n'y ai-je pas pensé avant :mad:
Sans rire, quelle formule ! ET ELLE FONCTIONNE EN PLUS ! Merci beaucoup à toi.
A bientôt

Merci surtout à Roger2327 :)
Et méfiez-vous de Datedif qui peut générer des erreurs !
:)
 

ROGER2327

XLDnaute Barbatruc
Re : Nbre années, nbre mois et nbre jours entre deux dates

Bonjour à tous.


La formule que je propose est simple, pourvu qu'on veuille bien la comprendre.
Elle est fondée sur ce raisonnement simple :
Si on sait le nombre de mois (jour pour jour) M inclus entre les deux dates extrêmes A1 et B1, il n'est pas difficile de voir que le nombre d'années séparant les deux dates est ENT(M/12).
Le résidu MOD(M;12) donne le nombre de mois exclus des années entières.
On complète par le nombre de jours séparant la date MOIS.DECALER(A1;M) de la date B1, soit B1-MOIS.DECALER(A1;M).
Exemple :
A1 est le 3 mai 1948, B1 est aujourd'hui 22 avril 2014.
Il est clair que, du 3 mai 1948 au 3 avril 2014, on compte M = 791 mois.
ENT(M/12) = ENT(791/12) = 65
MOD(M;12) = MOD(791;12) = 11
B1-MOIS.DECALER(A1;M) = 41751-MOIS.DECALER(17656;791) = 19
Ainsi, du 3 mai 1948 au 22 avril 2014, on compte 65 ans, 11 mois et 19 jours.
N'est-ce pas simple ?

Avec un poil de formatage pour faire joli, la formule est :​
VB:
=TEXTE(ENT(M/12);"[>=2]0"" ans, "";0"" an, """)
&MOD(M;12)&" mois, "
&TEXTE(B1-MOIS.DECALER(A1;M);"[>=2]0"" jours"";0"" jour""")
Plus simp', tu meurs !
Reste à trouver M ; c'est quasiment-simple.

À la louche, 12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1) semble être une bonne estimation. Malheureusement, le mois est du genre unité élastique : on corrige !​
VB:
=                 12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1)
-(MOIS.DECALER(A1;12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1))>B1)
En substituant cette expression à M, la formule précédente devient :​
VB:
=             TEXTE(ENT((12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1)
       -(MOIS.DECALER(A1;12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1))>B1))/12);
"[>=2]0"" ans, "";0"" an, """)
                    &MOD(12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1)
       -(MOIS.DECALER(A1;12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1))>B1);12)
&" mois, "&
TEXTE(B1-MOIS.DECALER(A1;12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1)
       -(MOIS.DECALER(A1;12*(ANNEE(B1+1)-ANNEE(A1))+MOIS(B1+1)-MOIS(A1))>B1));
"[>=2]0"" jours"";0"" jour""")
Puisqu'on vous dit que c'est simple...


C'est tout ce dont a besoin notre ami.

Je dis cela car il n'est question que de dates pures dans la demande initiale. (J'entends par date pure une date représentée par un entier dans Excel.)

Si on veut utiliser avec des dates complétées par une partie de jour, il faudra remplacer B1+1 par
ENT(B1)+((ARRONDI(B1-ENT(B1)-A1+ENT(A1);6))>=0).​
Et c'est ainsi qu'on arrivera à la formule simple gentiment livrée en vrac par Victor21.

Reste à prouver que, malgré sa simplicité, cette formule est correcte...


Alléluia.


ℝOGER2327
#7272


Mardi 3 Palotin 141 (Saints Trolls, pantins - fête Suprême Quarte)
3 Floréal An CCXXII, 6,2653h - fougère
2014-W17-2T15:02:13Z
 
Dernière édition:

sdf34

XLDnaute Nouveau
Re : Nbre années, nbre mois et nbre jours entre deux dates

Ben dit donc ! Bon j'ai pas essayé ce code parce que la formule de Victor21 (merci Roger2327) fonctionne très bien, mais je le mets sous le coude, d'abord pour l'étudier, je suis un grand apprenti en VBA, et je souhaite progresser, alors j'étudie par le biais de vos codes et vos formules d'un autre monde ! lol, et ensuite parce que je pourrai l'utiliser telle quelle ou en l'adaptant pour un besoin ultérieur.
Un grand merci à vous tous pour votre aide toujours précieuse.
 

Discussions similaires

Réponses
15
Affichages
479

Statistiques des forums

Discussions
312 345
Messages
2 087 471
Membres
103 553
dernier inscrit
jhnm