petit soucis pour contourner la fonction DATEDIF en mois

mike13000

XLDnaute Nouveau
Bien le bonjour à vous tous,

Je sollicite votre aide, sur une fonction "DATEDIF", je voulais l'utiliser, mais elle ne permet pas de calculer des mois non écoulés.

j'ai un tableau avec la location de différents matériels, le contrat de location démarre de date à date.
Exemple, une nouvelle facturation se remet en place le 15 du mois, j'aimerais donc calculer du 15 au 14 chaque mois.
en C1 : jour d'arrêté de location : 15 ----- si en A1 J'ai 15/03/2016 et en B1 14/04/2016 IL devrait trouver 1.
Autre exemple du 15/03/2016 au 16/04/2016 il devrait trouver 2, car nous avons entamé un nouveau cycle de location. (soit du 15/03 au 14/05/2016)

j'ai essayé la fonction SI avec imbrication de la fonction DATEDIF. cela ne fonctionne pas vraiment.

Si vous pouviez venir à ma rescousse, merci pour tout.

Mike
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

si tu as des locations inférieures à 12 mois

Code:
=SI(JOUR(B1)>15;MOIS(B1)-MOIS(A1)+1;MOIS(B1)-MOIS(A1))

ou

Code:
=SI(JOUR(B1)>15;DATEDIF(A1;B1;"m")+1;SI(ET(JOUR(B1)<=15;MOIS(B1)<>MOIS(A1));DATEDIF(A1;B1;"m")+1))

JHA
 
Dernière édition:

mike13000

XLDnaute Nouveau
Merci @JHA , c'est exactement çà que je cherchais, comme ce sont des rapports sur l'année en cours du 01/01/2016 au 31 décembre. çà me donne le nombre de mois en locations pour 2016. je bloquerais donc manuellement chaque année le calcul au 1er janvier N+1, pour créer un nouveau rapport pour 2017, en gardant bien le rapport de 2016 avec le nombre de mois loués.

Merci infiniment pour ton aide.

Mike
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour mike13000, JHA :)

Un autre essai avec une formule matricielle en C1 (à valider avec Ctrl+Maj+Entrée) à tirer vers le bas.

Pour le calcul, j'ai considéré, par exemple, que pour les deux dates 13/03/2016 au 15/04/2016, il y avait trois périodes (toute période débutée est due - une période allant du 15 au 14) :
  • une du 13/03 au 14/03
  • une du 15/03 au 14/04
  • une du 15/4 au 15/04
Ce n'est peut-être pas la bonne interprétation ?

La formule matricielle :
VB:
=SOMMEPROD(N( JOUR(A1-1+LIGNE(INDIRECT("1:" & (B1-A1)+1)))= 15)) +(JOUR(A1)<>15)

edit: nul besoin d'une formule matricielle. Une validation simple suffit.

edit: Une formule encore plus simple:
VB:
=SOMMEPROD(N(JOUR(LIGNE(INDIRECT(A1&":"&B1)))=15))+(JOUR(A1)<>15)
 

Pièces jointes

  • mike13000- compter periode- v1.xlsx
    11.1 KB · Affichages: 64
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 388
Messages
2 087 871
Membres
103 672
dernier inscrit
ammarhouichi