Bonjour,
La fonction age permet de calculer le nombre d'année entre deux dates, y-a-t-il un equivalent pour calculer le nombre de mois et/ou jour?
Cordialement.
Bonjour,
La fonction age permet de calculer le nombre d'année entre deux dates, y-a-t-il un equivalent pour calculer le nombre de mois et/ou jour?
Cordialement.
Bonjour,
Pour compter la différence en jours, il suffit de faire une soustraction.
Je rencontre le même souci , mais je souhaite obtenir le nombre de mois.
Ma date début ainsi que celle de la fin est au format 'DD/MM/YYYY'.
par exemple si je fais début :01/01/2012
fin: 29/02/2012
29/02/2012 - 01/01/2012 = 59 jours
Ce que je souhaite c'est avoir 2 qui correspond au nombre de mois.
De plus j'ai une question si je tombe sur 45 jours , aurais 1 ou 1.5 ?
Autre question, si le nombre de mois est à intervalle de deux année
Par exemple :
début 11/12/2013 et fin 01/03/2014 normalement on à 79 jours sauf erreur soit 2 mois et 20 jous
Merci pour votre aide.
En divisant par 30 et en prenant l'arrondi suppérieur ?
Tout dépend de ce que vous souhaitez avoir...
Si vous voulez avoir "1", il suffit d'arrondir à l'entier inférieur (floor).
Si vous voulez avoir "1.5", il faut arrondir avec une précision de 0.5.
--> 2.0
Code : Sélectionner tout - Visualiser dans une fenêtre à part =ceil((date#('29/02/2012', 'DD/MM/YYYY') - date#('01/01/2012', 'DD/MM/YYYY')) / 30, 0.5)
--> 1.5
Code : Sélectionner tout - Visualiser dans une fenêtre à part =ceil((date#('15/02/2012', 'DD/MM/YYYY') - date#('01/01/2012', 'DD/MM/YYYY')) / 30, 0.5)
Bonjour,
Pour avoir ce que tu veux, il faut utiliser une formule avec les fonction Month et Year.
Par exemple, la fonction ci-dessous te donne le nombre de mois entre DateFin et DateDeb.
Attention, cet formule ne fonctionne que si dateDeb est inférieure à DateFin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =(12 - Month(DateDeb) + 1) + (12 - Month(DateFin)) * (Year(DateFin) - Year(DateDeb) - 1) + Month(DateFin) * (Year(DateFin) - Year(DateDeb))
Après tout dépend ce que tu veux vraiment. Ici, la formule proposée te donnera toujours un nombre entier de mois et comptera le mois de début et le mois de fin. Donc si, par exemple, tu as 01/01/2015 et 02/01/2015, ça renverra 1. Après, tu peux t'en inspirer et adapter la formule pour avoir ce que tu veux. Mais ça, c'est juste des maths, on va pas le faire à ta place...
Si l'objectif est de dire un nombre de mois + un nombre de jours, on peut faire :
- on compte d'abord le nombre de mois complets (nombre de mois entre 01/01/2013 et 01/03/2014)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 =ceil((floor(monthstart(dateFin)) - ceil(monthend(dateDebut))) / 365.25 * 12) & ' mois et ' & ((dateFin - floor(monthstart(dateFin))) + (ceil(monthend(dateDebut)) - dateDebut)) & ' jours'
- on rajoute le nombre de jours qu'il y a entre le 11/12/2013 et le début du mois suivant + le nombre de jours qu'il y a entre le 01/03/2014 et le mois précédent
Inconvénient : entre le "02/11/2013" et le "29/03/2014", ça annoncera "2 mois et 58 jours".
D'un autre coté, on ne sait pas combien de mois + jours représentent ces "58 jours" étant donné que le nombre de jours dépend du mois dans lequel on est...
Pourquoi faire compliqué quand il y à simple. J'ai juste /30En divisant par 30 et en prenant l'arrondi suppérieur ?
Merci Phunky BOB.
Je connaissais pas la fonction "ceil" .
Une toute dernière question sur ce sujet, car je vois tous les cas de figure.
admettons que début : 01/01/2015 et fin 30/11/2015 soit 10 mois.
Dans ma sélection je choisis 201508 , ce qui me donnera 10 - 8 = 2 mois (sachant que 08-2015 est au format 'YYYYMM' donc 201508)
si je prend juillet j'ai 10 - 7 soit 3 mois.
je peux refaire
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part =ceil((date#('29/02/2012', 'DD/MM/YYYY') - date#('01/01/2012', 'DD/MM/YYYY')) / 30, 0.5) - Date(Date#(Annee_Mois,'YYYYMM'),'DD/MM/YYYY')
Je ne comprends pas la question, mais vous pouvez utiliser les fonctions "monthstart" et "monthend" pour arrondir vos dates au premier jour du mois ou au dernier jour du mois.
Tu peux aussi te créer ta propre fonction MonthDiff, en créant une variable que tu utiliseras ensuite comme n'importe quelle fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET MonthDiff = Num(((year($2) * 12) + month($2)) - (((year($1) * 12) + month($1))) + 1) ;
Permet de créer l’équivalent d'une fonction pour compter le nombre de mois entre 2 dates: $(MonthDiff(StartDate, EndDate))
J'essai de reformuler , désole.
En fonction de la période sélectionner je veux connaitre le nombre de mois qu'il reste.
Je vous un prend un exemple :
J'ai un locataire qui occupe un appartement. Le bail est conclus du (date début)01/01/2015 au (date fin)31/11/2015 soit 11 mois.
Quand je sélectionne le mois d’Août (format YYYYMM) il me fait la différence du nombre de mois jusqu'au 31/11/2015 .
Dans le cas ou je sélectionne Août , j'aurai 3 qui s'affichera soit 11 - 8 = 3 .
Dans le cas ou je sélectionne Juin , j'aurai 5 qui s'affichera soit 11 - 6 = 5 .
J'avais penser à la date système , mais si je choisis Juin 2015 par exemple , ça marchera pas.
D'autant plus que je peux avoir une année à cheval .
Un peu comme si on se balade à l'aide d'un curseur et qu'il donne la valeur en fonction de la sélection.
Je sais pas si c'est assez clair.
Merci.
Le format de la date importe peu, car une date est un nombre, affiché sous un format texte. Les opérations faites sur les dates se base sur le numérique.
Si votre dimension n'est pas une date, mais juste une chaine de caractère, il faut alors la convertir avec la fonction "date#()".
Salut, est-ce transposable ?
Après c'est toujours une histoire de +1 ou pas pour le nombre de jours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Option Explicit Function DiffDateAMJ(DateDebut As Date, DateFin As Date) As String Dim NbAns As Long, NbMois As Long, NbJours As Long Dim Tmp As Date Tmp = DateSerial(Year(DateFin), Month(DateDebut), Day(DateDebut)) NbAns = Year(DateFin) - Year(DateDebut) + (Tmp > DateFin) NbMois = Month(DateFin) - Month(DateDebut) - (12 * (Tmp > DateFin)) NbJours = Day(DateFin) - Day(DateDebut) If NbJours < 0 Then NbMois = NbMois - 1 NbJours = Day(DateSerial(Year(DateFin), Month(DateFin), 0)) + NbJours End If DiffDateAMJ = NbAns & "a " & NbMois & "m " & NbJours & "j" End Function
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager