Problème de calcul de dates

Bonsoir à la liste,

Je cherche tout simplement à calculer la différence de jours entre deux dates, mais apparemment, j'obtiens un résultat qui n'a rien à voir avec le nombre de jours réels.

Le fichier est http://www.cjoint.com/?CHuj2v8QgxT.

Comment cela s'explique?

format de date ?

Sinon, le plus simple consiste à faire une simple soustraction.

Bonjour,

De : galahad@ftp83plus.net [mailto:galahad@ftp83plus.net]
Envoyé : mardi 20 août 2013 09:58

Bonsoir à la liste,

Je cherche tout simplement à calculer la différence de jours entre deux
dates, mais apparemment, j'obtiens un résultat qui n'a rien à voir avec le
nombre de jours réels.

Le fichier est http://www.cjoint.com/?CHuj2v8QgxT.

Comment cela s'explique?

Oups, évident quand on l'a vu, mais avant !

Tes résultats sont formatés en date (jour du mois), alors qu'ils doivent
l'être en nombre.
Or: 3 comme n° de série de date correspond au 02/01/1900, et l'affichage
donne 2 puisque le 2° jour du mois.
De même 1 correspond au 31/12/1899, donc l'affichage est 31

Bonne journée,
Michel

Bonjour,

Bonsoir à la liste,

Je cherche tout simplement à calculer la différence de jours entre deux dates, mais apparemment, j'obtiens un résultat qui n'a rien à voir avec le nombre de jours réels.

Le fichier est http://www.cjoint.com/?CHuj2v8QgxT.

Comment cela s'explique?

C'est tout simple. Pour compter des jours, il te suffit de soustraire la date de fin et celle de début. Les dates sont des numéros de séries (donc des nombres).
Tu fais donc B2-A2
La fonction JOUR ne sert qu'à extraire le jour d'une date ou à le tester (enfin à ma connaissance)
La fonction DATEDIF devrait en effet fonctionner. Je n'en suis pas une grande utilisatrice. Si quelqu'un peut nous éclairer... (@Pierre-Yves, tu es là ? :wink:

Marie-Jo

Re-

De : Marie jo Libo [mailto:mariejo@opengo.fr]
Envoyé : mardi 20 août 2013 10:19

> Bonsoir à la liste,
>
> Je cherche tout simplement à calculer la différence de jours entre deux
dates, mais apparemment, j'obtiens un résultat qui n'a rien à voir avec le
nombre de jours réels.
>
> Le fichier est http://www.cjoint.com/?CHuj2v8QgxT.
>
> Comment cela s'explique?
>
C'est tout simple. Pour compter des jours, il te suffit de soustraire la
date de fin et celle de début. Les dates sont des numéros de séries
(donc des nombres).
Tu fais donc B2-A2
La fonction JOUR ne sert qu'à extraire le jour d'une date ou à le tester
(enfin à ma connaissance)

Attention, il existe 2 fonctions:
  JOUR qui donne le jour du mois
  JOURS qui donne la différence entre 2 dates (celle utilisée par galahad)

Le plus simple est en effet comme le précisait aussi Ysabeau de faire
directement la différence entre les 2 dates, mais même dans ce cas, il faut
formater le résultat en nombre et non en date

Par défaut (c'est-à-dire sans formater les cellules), Calc choisit
automatiquement les bons formats, si on entre deux dates, par exemple; 5/6
et 9/10, il le comprendra comme des dates (selon le paramétrage fait dans :
Options > Paramètres linguistique > Langues > Motifs d'acceptation de dates)
et affichera: 05/06/13 et 09/10/13 et si on fait la différence, le format
choisi sera standard et l'affichage 126.

Michel

Bonjour,

Il se passe quelque chose d'étonnant avec ton fichier. Si je réécris la formule :
= DATEDIF(A2; B2; "d")
et recopie vers le bas, les résultats sont bons !
Je ne sais pas où se trouve l'erreur.
Testé avec LibO 4.0.4.2 sous Win7 64b

Bon surf,
Christian

Bonjour,

Je ne sais si c'est "déontologiquement" correct mais si on ajoute 1 à tes formules le résultat devient bon !

Michel

Bonjour,

-----Message d'origine-----
De : Michel ANDREU [mailto:michelandreu@gmail.com]
Envoyé : mardi 20 août 2013 17:45
À : users@fr.libreoffice.org
Objet : Re: [fr-users] Problème de calcul de dates

> Bonsoir à la liste,
>
> Je cherche tout simplement à calculer la différence de jours entre deux
dates, mais apparemment, j'obtiens un résultat qui n'a rien à voir avec le
nombre de jours réels.
>
> Le fichier est http://www.cjoint.com/?CHuj2v8QgxT.
>
> Comment cela s'explique?
>
>
>
Bonjour,

Je ne sais si c'est "déontologiquement" correct mais si on ajoute 1 à
tes formules le résultat devient bon !

Attention de ne pas troubler les esprits de ceux qui n'auraient pas suivi le
fil depuis le début et chercherait un mystère à défaut d'un bug. Au risque
d'en déduire que Calc c'est vraiment n'importe quoi ...

L'explication, pourtant très simple, tient au formatage du résultat en date
et non en nombre - format J qui présente uniquement le jour du mois de la
date. Mettez JJ et vous aurez 02 pour le premier résultat au lieu de 2.

Le bon résultat avec l'ajout du 1 est très logique. En effet, comme expliqué
dans ma réponse de ce matin, les résultats sont respectivement 3 et 1 qui
formatés en date donnent 02/01/1900 et 31/12/1899 (d'où les 2 et 31). Si on
ajoute 1, les dates deviennent 03/01/1900 et 01/01/1900 qui avec le
formatage J s'affichent 3 et 1, qui semblent des résultats corrects, mais
qui sont faux puisque équivalent aux numéros de série 4 et 2!

Si je me permets d'enfoncer le clou, c'est qu'il y a suffisamment
d'utilisateurs peu au fait de la façon dont un tableur gère les dates, et
qu'il ne me paraît pas opportun de rajouter de la confusion.

Dernière précision car on est sur une liste users avec peut-être des
utilisateurs qui débutent avec un tableur:
Une date est un nombre entier (appelé numéro de série) qui compte les jours
depuis une origine fixée au 30/12/1899 (Options > LibreOffice Calc > Calcul)
Et si on utilise un nombre décimal, on obtient des fractions de jours qui
donneront l'heure, les minutes, ...

Bonne soirée,
Michel

Bonjour,

Simple : à partir de n'importe quelle valeur (même décimale), il suffit de formater en date suivant le format souhaité. Si on formate la valeur 1 en date, on obtiens 31/12/1899, point de référence des calculs de dates dans les tableurs (enfin si les réglages ne sont pas modifiés).
A l'inverse, je prends la date du jour : 21/08/2013, formatée en nombre, donne 41507, soit le nombre de jours écoulés depuis la date référence (31/12/1899).
A noter que Calc fonctionne en négatif, c'est à dire avant la date référence. Il tient même compte du calendrier grégorien : le lendemain du 04/10/1582 est le 15/10/1582. On peut tester facilement. Excel ne sait pas faire ça.
Enfin, la partie décimale représente l'heure (en centièmes).

Pour ton fichier, tu devrais recommencer avec un classeur neuf, et si le problème persiste, préciser la version LiBO et l'OS.

Bon surf,
Christian/
/