Calculer nombre de jours entre 2 dates sous condition
Résolu
badjoyce
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
DevAxia Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
DevAxia Messages postés 34 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche désespérément une formule permettant de calculer le nombre de jours entre 2 date sous condition. Je connais la formule datedif, mais je voudrais n'afficher que le nombre de jours total d'un même mois, défini préalablement.
Par exemple
En A1: 01/01/2014
En A2: 31/12/2016
En B1: comment obtenir par calcul Excel le nombre de jours total des mois de janvier entre ces 2 dates (soit dans ce cas présent 62)?
Merci aux âmes charitables qui auraient une solution à me proposer.
Bien cordialement
Je cherche désespérément une formule permettant de calculer le nombre de jours entre 2 date sous condition. Je connais la formule datedif, mais je voudrais n'afficher que le nombre de jours total d'un même mois, défini préalablement.
Par exemple
En A1: 01/01/2014
En A2: 31/12/2016
En B1: comment obtenir par calcul Excel le nombre de jours total des mois de janvier entre ces 2 dates (soit dans ce cas présent 62)?
Merci aux âmes charitables qui auraient une solution à me proposer.
Bien cordialement
A voir également:
- Nombre de jour entre 2 dates excel
- Nombre de jours entre deux dates excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
4 réponses
Bonjour
Une possibilité avec une fonction personnalisée à mettre dans un module
(ALT+F11 pour ouvrir Editeur VBA puis Insertion et Module Copier-coller la macro)
La fonction s'utilise comme nimporte quelle fonction, syntaxe : =Nmois(cellule1ere date;cellule 2eme date; n° du mois désiré)
Par ex :=Nmois(B3;B4;1) pour avoir le nombre de jours de janvier
Soit dit en passant dans ton exemple cela fait 93 et non 62 !
Cdlmnt
Via
Une possibilité avec une fonction personnalisée à mettre dans un module
(ALT+F11 pour ouvrir Editeur VBA puis Insertion et Module Copier-coller la macro)
Function Nmois(date1 As Range, date2 As Range, mois As String) m = date2.Value - date1.Value For n = 0 To m jour = (date1.Value + n) cemois = Month(CDate(jour)) If cemois = mois Then J = J + 1 Next Nmois = J End Function
La fonction s'utilise comme nimporte quelle fonction, syntaxe : =Nmois(cellule1ere date;cellule 2eme date; n° du mois désiré)
Par ex :=Nmois(B3;B4;1) pour avoir le nombre de jours de janvier
Soit dit en passant dans ton exemple cela fait 93 et non 62 !
Cdlmnt
Via
badjoyce
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
Génial, ça fonctionne parfaitement! Merci beaucoup, ça faisait des heures que je me prenais la tête là-dessus, au point de ne même plus arriver à faire un simple calcul ;)
Bonjour
Une tentative via une macro
http://www.cjoint.com/c/EFzr1df2cJg
RQ. Il va bien y avoir quelqu'un pour faire sans macro
Cdlmnt
Une tentative via une macro
http://www.cjoint.com/c/EFzr1df2cJg
RQ. Il va bien y avoir quelqu'un pour faire sans macro
Cdlmnt
Bonjour
essayez celle ci pour janvier
=DATEDIF(A1;A2;"Y")*31+SI(A1<DATE(ANNEE(A1);1;1);0;DATEDIF(A1;DATE(ANNEE(A1);2;1);"d"))+SI(A2>DATE(ANNEE(A2);1;31);0;DATEDIF(A2;DATE(ANNEE(A2);2;1);"d"))
je ne garantis pas...
pour changement de mois, modifier les valeurs des limites dans les codes DATE(....;mois;...)
bonne chance
crdlmnt
essayez celle ci pour janvier
=DATEDIF(A1;A2;"Y")*31+SI(A1<DATE(ANNEE(A1);1;1);0;DATEDIF(A1;DATE(ANNEE(A1);2;1);"d"))+SI(A2>DATE(ANNEE(A2);1;31);0;DATEDIF(A2;DATE(ANNEE(A2);2;1);"d"))
je ne garantis pas...
pour changement de mois, modifier les valeurs des limites dans les codes DATE(....;mois;...)
bonne chance
crdlmnt
Bonjour,
Je pense que vous devrez créer votre propre fonction.
Cette méthode est un peu différente de celle mentionnée précédemment, elle évite de créer une boucle sur toutes les dates entre la date de début et de fin.
Sauvegarder votre document Excel en Excel avec macros (.xlsm)
Ouvrir l'éditeur Visual Basic (Alt + F11)
Cliquez bouton-droit sur "Microsoft Excel Objects" dans le VBAProject et faire Insertion - Module
Dans la fenêtre du Module1, insérer le code suivant
Fermer l'éditeur VBA et sauvegardez votre document Excel.
Dans votre tableau Excel, utilisez la fonction suivante dans votre cellule B1
=DateDiffJM(date1, date2, mois)
date1 pointe sur votre cellule contenant la date de début (A1 dans votre cas)
date2 pointe sur votre cellule contenant la date de fin (A2 dans votre cas)
mois est la valeur numérique du mois (1-12).
EDIT: Précision du langage dans la coloration syntaxique.
Suppression de la signature non conforme à la charte
Je pense que vous devrez créer votre propre fonction.
Cette méthode est un peu différente de celle mentionnée précédemment, elle évite de créer une boucle sur toutes les dates entre la date de début et de fin.
Sauvegarder votre document Excel en Excel avec macros (.xlsm)
Ouvrir l'éditeur Visual Basic (Alt + F11)
Cliquez bouton-droit sur "Microsoft Excel Objects" dans le VBAProject et faire Insertion - Module
Dans la fenêtre du Module1, insérer le code suivant
Function DateDiffJM(date1 As Date, date2 As Date, mois As Long) As Long Dim YearsVal As Integer Dim JoursMois As Integer ' Validation If date1 > date2 Then DateDiffJM = 0 Exit Function End If ' Parcourir les années considérées For YearsVal = Year(date1) To Year(date2) ' Nombre de jours dans le mois concerné JoursMois = DateSerial(YearsVal, mois + 1, 1) - DateSerial(YearsVal, mois, 1) ' Retrancher les jours exclus If ((YearsVal = Year(date1)) And (mois < Month(date1))) Or _ ((YearsVal = Year(date2)) And (mois > Month(date2))) Then JoursMois = 0 ElseIf (YearsVal = Year(date2)) And (mois = Month(date2)) Then JoursMois = Day(date2) ElseIf (YearsVal = Year(date1)) And (mois = Month(date1)) Then JoursMois = JoursMois - Day(date1) + 1 End If DateDiffJM = DateDiffJM + JoursMois Next YearsVal End Function
Fermer l'éditeur VBA et sauvegardez votre document Excel.
Dans votre tableau Excel, utilisez la fonction suivante dans votre cellule B1
=DateDiffJM(date1, date2, mois)
date1 pointe sur votre cellule contenant la date de début (A1 dans votre cas)
date2 pointe sur votre cellule contenant la date de fin (A2 dans votre cas)
mois est la valeur numérique du mois (1-12).
EDIT: Précision du langage dans la coloration syntaxique.
Suppression de la signature non conforme à la charte