Calculer nombre de jours entre 2 dates sous condition [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015
-
Messages postés
34
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
18 novembre 2015
-
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

4 réponses

Messages postés
12858
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 novembre 2020
2 071
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)
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
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015

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 ;)
Messages postés
9633
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2020
1 973
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
Messages postés
5
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015

Merci, c'est tout à fait ce que je cherchais
Messages postés
25593
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
24 novembre 2020
5 617
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
Messages postés
5
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015

Bien tenté, mais ça ne semble pas fonctionner. Merci tout de même
Messages postés
34
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
18 novembre 2015
1
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

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
Messages postés
5
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015

Merci pour cette version améliorée, claire, précise... Et qui fonctionne parfaitement!
Messages postés
34
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
18 novembre 2015
1 >
Messages postés
5
Date d'inscription
jeudi 25 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015

Plaisir!