Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Optimiser une formule de calcul de la différence de mois entre deux dates

6 réponses
Avatar
Norvi
Bonjour,

J'ai une formule qui me permet de calculer le nombre de mois entre deux
dates, par exemple entre le 1er f=E9vrier 2006 et le 15 mars 2006, il y
a 1,48387097 mois (mars ayant 31 jours, la moiti=E9 du mois se situe
entre le 15 et le 16).

La formule =E9tant utilis=E9 dans plusieurs milliers de cellule, elle est
super longue a calculer. Est-ce qu'il y aurait un moyen de la
simplifier :

=3DSI(MOIS(Q40)=3DMOIS(Q41);(JOUR(Q41)-JOUR(Q40)+1)/(JOUR(DATE(ANNEE(Q40);M=
OIS(Q40)+1;0))-JOUR(Q40)+1);SI((JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))-JOUR(Q=
40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q41)/JOUR(DATE(ANNEE(Q41);=
MOIS(Q41)+1;0))<=3D1;DATEDIF(Q40;Q41;"m")+(JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1=
;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q41)/JOUR(DATE(=
ANNEE(Q41);MOIS(Q41)+1;0));SI(DATEDIF(Q40;Q41;"m")<=3D1;(JOUR(DATE(ANNEE(Q4=
0);MOIS(Q40)+1;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q=
41)/JOUR(DATE(ANNEE(Q41);MOIS(Q41)+1;0));DATEDIF(Q40;Q41;"m")+(JOUR(DATE(AN=
NEE(Q40);MOIS(Q40)+1;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+=
JOUR(Q41)/JOUR(DATE(ANNEE(Q41);MOIS(Q41)+1;0))-1)))

Merci pour votre aide.

N=2E

6 réponses

Avatar
lSteph
Bonjour,
outre la possible existence d'une formule plus directe, pour répondre à ta
question, indépendemment de son contenu tel qu'explicite,

Insertion Nom Définir un nom
maformule
réfère à : =SI(MOIS(Q40)=MOIS(Q41);(JOUR(Q41)-JOUR(....
patatipatata....)))

ensuite

=maformule

Cordialement.

lSteph

"Norvi" a écrit dans le message de news:

Bonjour,

J'ai une formule qui me permet de calculer le nombre de mois entre deux
dates, par exemple entre le 1er février 2006 et le 15 mars 2006, il y
a 1,48387097 mois (mars ayant 31 jours, la moitié du mois se situe
entre le 15 et le 16).

La formule étant utilisé dans plusieurs milliers de cellule, elle est
super longue a calculer. Est-ce qu'il y aurait un moyen de la
simplifier :

=SI(MOIS(Q40)=MOIS(Q41);(JOUR(Q41)-JOUR(Q40)+1)/(JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))-JOUR(Q40)+1);SI((JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q41)/JOUR(DATE(ANNEE(Q41);MOIS(Q41)+1;0))<=1;DATEDIF(Q40;Q41;"m")+(JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q41)/JOUR(DATE(ANNEE(Q41);MOIS(Q41)+1;0));SI(DATEDIF(Q40;Q41;"m")<=1;(JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q41)/JOUR(DATE(ANNEE(Q41);MOIS(Q41)+1;0));DATEDIF(Q40;Q41;"m")+(JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))-JOUR(Q40)+1)/JOUR(DATE(ANNEE(Q40);MOIS(Q40)+1;0))+JOUR(Q41)/JOUR(DATE(ANNEE(Q41);MOIS(Q41)+1;0))-1)))

Merci pour votre aide.

N.
Avatar
AV
Bizarre les décimales de mois.
Tu intégres les 2 bornes dans tes calculs. Est-ce vraiment logique ??
Soit.
Selon à quoi sert le résultat, il me semble que l'on peut arriver à une
approximation "raisonnable" avec une formule plus courte
ÚTEDIF(début;fin+1;"m")+DATEDIF(début;fin+1;"md")/30.43

Curieux quand même tout ça.
AV
Avatar
Norvi
Bonjour,
Le problème est qu'il me faut le résultat le plus précis possible,
avec au moins 4 décimales.

Dans ton exemple AV, si on prend par exemple le "nombre de mois" entre
le 1 et le 15 février, on trouve 0.4929 alors qu'en réalité, c'est
0.5357, ce qui fait tout de même une différence de 8%. Et même s'il
n'y a que des différence de 0,5%, ca peut faire mal sur des montants
importants.

(par contre je viens de me rendre compte que ma formule ne marche pas
s'il y a entre 12 et 13 mois de différence !)

Tu intégres les 2 bornes dans tes calculs -> quand on parle d'une date comprise entre le 1 février et le 15 février, ces deux jours sont bien compris dans le calcul, donc entre ces deux date, il n'y a pas 14 jours (15 - 1 = 14), mais bien 15, le premier février commencant à 00:00:01 et le 15 se terminant à 23:59:59


N.

Avatar
AV
.......quand on parle d'une date comprise entre le 1 février et le 15 février,
ces deux jours sont bien compris dans le calcul,


Ca ça s'appele un postulat .... qui n'engage que toi-même !

Entre aujourd'hui et demain, combien de jours ? etc....

Dans ce type de calcul, il me parait indispensable de préciser si les bornes
sont incluses ou pas.
Il n'y a pas d'évidence en ce domaine, comme tu le laisses supposer

En ce qui concerne ta question et les réponses attendues, une formule :
ÚTEDIF(début;fin+1;"m")+DATEDIF(début;fin+1;"md")/(32-JOUR(fin-JOUR(fin)+32))

PS : Il reste des zones d'ombre par rapport aux résultats renvoyés par ta
formule...
Exemple : début 15/09/06 >> fin : 16/09/06
Ta formule renvoie 0.125..
Quelle est la logique ?

AV

Avatar
Norvi
Bonjour AV,

Effectivement, ce n'est qu'un postulat....

Et re-effectivement, il n'y a pas de logique, puisque le résultat est
faux....

par contre, ta formule beaucoup plus courte (faut que je me penche
dessus pour la comprendre !!!) a l'air de fonctionner nettement mieux.

Merci beaucoup.

N.



.......quand on parle d'une date comprise entre le 1 février et le 15 février,
ces deux jours sont bien compris dans le calcul,


Ca ça s'appele un postulat .... qui n'engage que toi-même !

Entre aujourd'hui et demain, combien de jours ? etc....

Dans ce type de calcul, il me parait indispensable de préciser si les b ornes
sont incluses ou pas.
Il n'y a pas d'évidence en ce domaine, comme tu le laisses supposer

En ce qui concerne ta question et les réponses attendues, une formule :
ÚTEDIF(début;fin+1;"m")+DATEDIF(début;fin+1;"md")/(32-JOUR(fin-JO UR(fin)+32))

PS : Il reste des zones d'ombre par rapport aux résultats renvoyés pa r ta
formule...
Exemple : début 15/09/06 >> fin : 16/09/06
Ta formule renvoie 0.125..
Quelle est la logique ?

AV



Avatar
Norvi
oups, quand même un petit truc qui ne vas pas (je n'ai peut être pas
bien expliqué ma problématique)
Entre le 31 janvier et le 1er février, il y a 1/31 + 1/28 jours ce qui
donne 0.0680, or ta formule donne 0.0714. Mais je pense qu'en adaptant
ta formule avec quelques conditions je devrais trouver mon bonheur.
Encore merci
N.


Bonjour AV,

Effectivement, ce n'est qu'un postulat....

Et re-effectivement, il n'y a pas de logique, puisque le résultat est
faux....

par contre, ta formule beaucoup plus courte (faut que je me penche
dessus pour la comprendre !!!) a l'air de fonctionner nettement mieux.

Merci beaucoup.

N.



.......quand on parle d'une date comprise entre le 1 février et le 1 5 février,
ces deux jours sont bien compris dans le calcul,


Ca ça s'appele un postulat .... qui n'engage que toi-même !

Entre aujourd'hui et demain, combien de jours ? etc....

Dans ce type de calcul, il me parait indispensable de préciser si les bornes
sont incluses ou pas.
Il n'y a pas d'évidence en ce domaine, comme tu le laisses supposer

En ce qui concerne ta question et les réponses attendues, une formule :
ÚTEDIF(début;fin+1;"m")+DATEDIF(début;fin+1;"md")/(32-JOUR(fin- JOUR(fin)+32))

PS : Il reste des zones d'ombre par rapport aux résultats renvoyés par ta
formule...
Exemple : début 15/09/06 >> fin : 16/09/06
Ta formule renvoie 0.125..
Quelle est la logique ?

AV