DATEDIF

andré

XLDnaute Barbatruc
Bonjour à tous,

J'ai un problème avec la fonction DATEDIF, et comme il n'y a pas d'aide MS, je m'adresse à vous (voir pièce jointe).

Les résultats obtenus ne sont pas exacts, à moins que ce soit la formule qui ne l'ai pas (plus que probable).

Quelqu'un pourrait-il me signaler où j'ai fait l'erreur, moi je ne la trouve pas.

Merci d'avance.
Ândré.



[file name=datedif_V1.zip size=3728]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/datedif_V1.zip[/file]
 

Olivier_HTP

XLDnaute Occasionnel
Bonjour André, le Forum,


La formule que tu utilises est exactement la même que celle que donne J. Walkenbach dans son livre, donc je pense que l'on peut la considérer comme bonne.

En revanche, concernant ton écart, n'y aurait-il pas une question liée aux années bisextiles ?

Bonne journée,

Olivier_HTP
 

ZZR09

XLDnaute Occasionnel
Oh la la !!!

Bien vu André ;)

Mais, j'en fait quoi moi de ma formule à rallonge basée essentiellement sur cette fonction? :(

Il me paraît aussi évident qu'il y a un problème avec cette fonction.
Mon hypothèse est que cette fonction est basée sur 365,242190 jours en moyenne (source :side: Dates & Heures de Cathy et Monique)

Cette approximation génèrerai quelques erreurs sur des dates clés (passage d'une année à l'autre, années bissextiles, etc.)

... mais peut-être qu'il vaut mieux attendre la réponse de Monique qui a planché sur le problème pendant de longues heures


D'autres hypothèses?
 
J

JJ59

Guest
Bonjour le Forum, André, Olivier et ZZr09

Dans le 'package' Morefun, il y a une variante de Dateif qui répond
exactement à la question.
Il existe une nouvelle version de Morefun à télécharger sur le site de
son auteur (X-CELL)


Bonne journée à tous

Jean-Jacques
 
J

JJ59

Guest
Bonjour le Forum, André, Olivier et ZZr09

Dans le 'package' Morefun, il y a une variante de Dateif qui répond
exactement à la question.
Il existe une nouvelle version de Morefun à télécharger sur le site de
son auteur (X-CELL)


Bonne journée à tous

Jean-Jacques
 

andré

XLDnaute Barbatruc
Salut à vous,

Je ne serai donc pas encore tout à fait sénile, du moins si je le suis, je ne suis pas le seul, merci les amis !

C'est justement en cherchant une réponse au message de ZZ09 que je suis arrivé à cette constatation.

J'avais bien une autre idée, mais je m'étais dit que, comme cette fonction existe, tant l'employer, mais vérifions d'abord son fonctionnement exact, et ... patatra, le fonctionnement est bon, mais l'exactitude ne l'est pas !
Serait-ce la raison pour laquelle elle n'est pas reprise sous l'aide MS ?

Je reprends donc ma première idée, sans cette fonction, à moins que Monique ne nous propose une parade.

Ândré.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Perso je l'ai dans l'aide MS je te la copie ci-dessous bien que cela n'apporte pas grand chose

_______________________________________________________________

DATEDIF
Voir aussi

Calcule le nombre de jours, de mois ou d'années séparant deux dates. Cette fonction est fournie pour assurer une compatibilité avec Lotus 1-2-3.

Syntaxe

DATEDIF(date_début,date_fin,unité)

Date_début est une date qui représente la première date, ou date de début, de la période. Les dates peuvent être entrées sous forme de chaînes de caractères délimitées par des guillemets (par exemple, '30/1/2001'), sous forme de numéros de série (par exemple, 36921, qui représente le 30 janvier 2001, si vous utilisez le format de calendrier depuis 1900), ou sous forme de résultats d'autres formules ou fonctions (par exemple, DATEVAL('30/1/2001')). Pour plus d'informations sur les dates exprimées sous forme de numéros de série, consultez MAINTENANT.

Date_fin est une date qui représente la dernière date, ou date de fin, de la période.

Unité est le type d'informations qui doit être renvoyé.

Unité Renvoie
'A' Le nombre d'années entières comprises dans la période.
'M' Le nombre de mois entiers compris dans la période.
'J' Le nombre de jours compris dans la période.
'MJ' La différence entre les jours de date_début et date_fin. Les mois et les années des dates ne sont pas pris en compte.
'AM' La différence entre les mois de date_début et date_fin. Les jours et les années des dates ne sont pas pris en compte.
'AJ' La différence entre les jours de date_début et date_fin. Les années des dates ne sont pas prises en compte.


Remarques

Microsoft Excel stocke les dates sous forme de numéros de série séquentiels de façon à pouvoir effectuer des calculs portant sur ces dates. Excel stocke le 1er janvier 1900 sous forme du numéro de série 1 si votre classeur utilise le format de calendrier depuis 1900. Si votre classeur utilise le calendrier depuis 1904, Excel stocke le 1er janvier 1904 sous forme du numéro de série 0 (le 2 janvier 1904 est le numéro de série 1). Par exemple, dans le système de calendrier depuis 1900, Excel stocke le 1er janvier 1998 sous forme du numéro de série 35796 étant donné que 35 795 jours se sont écoulés depuis le 1er janvier 1900. Obtenir plus d'informations sur la façon dont Microsoft Excel stocke les dates et les heures.


Excel pour Windows et Excel pour Macintosh utilisent des bases annuelles différentes par défaut. Pour plus d'informations, consultez MAINTENANT.
Exemples

DATEDIF('1/1/2001','1/1/2003','A') égale 2, c'est-à-dire deux années entières dans la période.

DATEDIF('1/6/2001','15/8/2002','J') égale 440, c'est-à-dire 440 jours entre le 1er juin 2001 et le 15 août 2002.

DATEDIF('1/6/2001','15/8/2002','AJ') égale 75, c'est-à-dire 75 jours entre le 1er juin et le15 août, sans tenir compte des années des dates.

DATEDIF('1/6/2001','15/8/2002','MJ') égale 14, c'est-à-dire la différence entre 1 et 15 — le jour de date_début et le jour de date_fin — sans tenir compte des mois et des années des dates.

_______________________________________________________________________

Bon courage
 

andré

XLDnaute Barbatruc
Salut Pascal,

Merci pour l'information, pourtant je travaille sur XL2003, version française, et je ne l'ai pas.
Peut-être es-tu sur MAC ?

Petite précision toutefois : les A, M et J ne fonctionnent pas (message d'erreur), il faut necessairement employer y, m et d.

Je viens de tester sous le calendrier 1904, et là ... surprise !
Toutes les dates de la colonne A (de mon exemple) sont décalées d'un jour.
Aussi bon à savoir pour ne pas faire d'erreurs.

Ândré.
 

Tibo

XLDnaute Barbatruc
Salut André, le forum,

Tu peux parvenir à l'aide de cette fonction de la façon suivante :

tu tapes DATEDIF(

puis tu tapes aussitôt sur le = à gauche de la barre de formule.

Ensuite, tu dis que tu veux de l'aide et tu arrives sur la page d'aide de cette fonction.

Sur ce, bon appétit à tous.

@+
 

Dan

XLDnaute Barbatruc
Bonjour André, le forum,

Essaie cette formule (testée sur PC - excel 2000) que j'ai dans mes archives :

=SI(DATEDIF(A1;B1;'y')=0;;DATEDIF(A1;B1;'y')&SI(DATEDIF(A1;B1; 'y')>1;' ans ';' an '))&DATEDIF(A1;B1;'ym')&'mois ' &DATEDIF(A1;B1;'md')&SI(DATEDIF(A1;B1;'md')>1;' jours '; ' jour ')

Mais bon, pour la première et la zseconde date, je trouve la même valeur. Ce qui me fait penser que le passage de l'an 2000 pose pb.

Vois aussi ce que l'aide excel donne à cette rubrique : 'Gestion des dates des années 2000 et ultérieures dans Microsoft Excel'

:)
 

andré

XLDnaute Barbatruc
Salut Dan,

Je viens d'essayer avec des dates postérieures à 2000 sur XL2003, et c'est tout aussi faux !

Si l'erreur ne se produisait qu'au changement de mois, j'aurais pu imaginer un correctif, mais une autre erreur se produit aussi les années bissextiles.

Il serait donc prudent d'oublier cette fonction et de trouver autre chose.
Je suis sur la (bonne ?) voie, mais c'est complexe.
Je vais devoir nommer les parties répétitives pour que ce soit gérable.

Patience, et vous tiens au courant.

Ândré.
 

ZZR09

XLDnaute Occasionnel
Salut le forum,

Je viens de tester plusieurs passages d'une année à l'autre 31/1997 à 15/07/2005 par exemple avant et après l'année 2000 :side:

Cela, tant avec la fonction datedif d'Excel qu'avec Diffdate de MorFun (fonctions supplémentaires).

J'arrive toujours au même résultat : Le problème soulevé par André est récurrent.

:S

Je voudrait compter le nombre de jours renvoyés par datedif dans un intervalle de deux dates étalés sur plusieurs siècles pour estimer la différence moyenne ...

mais je n'arrive pas à faire des opérations sur les résultats de datedif (soustraire une la date précédente pour obtenir 1, 0 ou -1 jour) et faire une moyenne en tête de ligne).

Quelqu'un a t-il une idée? ou saurait-il poursuivre?

A+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
RE

en essayant de faire une petite macro qui correpondrait à ce que demande André j'arrive avec plus ou moins les mêmes erreurs et cela m'a peut-être aidé à comprendre

Prenons le cas du

15/01/2000

si j'ajoute 5 ans et 6 mois cela me donne le 15/07/2005

mais le lendemain

16/01/2000

si j'ajoute 5 ans et 5 mois cela me donne le 16/06/2005 donc jusqu'au 15/07/2005 il y a bien que 29 jours

Donc en fait la formule renvoie le bon nombre mais cela veut dire que on ne passe pas de 5 ans 6 mois à 5 ans 5 mois 30 jours

D'ailleurs vous remarquerez que les erreurs surlignées par André ne correspondent qu'aux dates dont le jour est compris entre 16 (jour d'aujourd'hui +1 ) et 31

En fait ce que tu estimes André comme bon c'est que tu retires les années et les mois à la date la plus grande pour t'approcher de la date la plus petite alors que DATEDIF fait l'inverse (la fonction ajoute les mois et les annéees à la date la plus petite pour tendre vers la plus grande)

dailleurs cela est vérifié avec le 29 /02/2000 : si j'ajoutes 5 ans 4 mois j'arrive au 29/06/2005 donc après jusqu'au 15/07/2005 j'ai bien 16 jours; mais le lendemain le 01/03/2000 si j'ajoutes 5 ans 4 mois j'arrive au 01/07/2005 et là il me reste plus que 14 jours pour arriver au 15/07/2005. Donc en une journée j'en ai pris 2

Je pense que c'est de là que vient la différence mais je ne sais pas si j'ai été très clair

Bon courage

Message édité par: Pascal76, à: 15/07/2005 15:03
 

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i