Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Exclure une période des calcule de jours entre 2 dates (Datedif)

Antibios

XLDnaute Nouveau
Bonjour à tous,

Permettez-moi dans un premier temps de vous souhaiter une belle année 2024.

Cela fait plusieurs jours que je teste différentes formules et approches pour le calculer le nombre de jours d'un période définie entre 2 dates.
Je m'explique :
La période hivernale commence du 15 novembre et se termine le 15 mars. Je cherche automatiser le calcul lors de la saisie de dates sachant que, les années sont variables et que si la période saisie et sur plusieurs années, qu'elle ne calcule que les périodes hivernales sur plusieurs années
J'obtiens des résultats quand les dates restes dans la même année ou dans la même période, mais dès que je dépasse une saison complète, cela calcule tout les jours entre les 2 dates.
Voici les formules créées, mais je ne dois pas saisir entièrement la logique à appliquer :
=DATEDIF(MAX(DATE(SI(MOIS($A$2)>=11;ANNEE($A$2);ANNEE($A$2)-1);11;15); $A$2); MIN(DATE(SI(MOIS($B$2)>=11;ANNEE($B$2);ANNEE($B$2)+1);3;15); SI(ET(MOIS($B$2)>3;MOIS($B$2)<=11);DATE(ANNEE($B$2);3;15);$B$2)); "d")+1
ou
=DATEDIF(MAX(DATE(SI(MOIS($A$2)>=11;ANNEE($A$2);ANNEE($A$2)-1);11;15);$A$2);MIN(DATE(SI(ET(ANNEE(B2)>ANNEE(A2);MOIS($B$2)>=11);ANNEE($B$2)+1;ANNEE($B$2));3;15);$B$2-DATEDIF(DATE(ANNEE($B$2);3;16);DATE(ANNEE($B$2);11;15);"d"));"d")+1

J'ai également essayé avec des conditions SI en amont du calcul pour filtrer le calcul a réaliser, J'ai amélioré la précision mais ca bug dès que ca passe sur 2 ans de calcul. (voir classeur ci-joint)

Je vous demande donc de l'aide pour m'aider à résoudre ma problématique.

D'avance merci
 

Pièces jointes

  • Datedif Période hivernale.xlsb
    8.7 KB · Affichages: 10

Eric KERGRESSE

XLDnaute Occasionnel
Bonjour,

Si une fonction VBA est possible :

Nb: Les dates de départ sont incluses dans le calcul.

VB:
Function NbJours(ByVal DateDebut As Date, ByVal DateFin As Date) As Integer

Dim DateEnCours As Date

    NbJours = 0
    For DateEnCours = DateDebut To DateFin
        Select Case Month(DateEnCours)
               Case 11
                  Select Case Day(DateEnCours)
                         Case 15 To 30
                              NbJours = NbJours + 1
                  End Select
               Case 12, 1, 2
                    NbJours = NbJours + 1
               Case 3
                  Select Case Day(DateEnCours)
                         Case 1 To 15
                              NbJours = NbJours + 1
                  End Select
        End Select
    Next DateEnCours

End Function

 

job75

XLDnaute Barbatruc
Bonjour Antibios, Eric KERGRESSE,

Formule en C2, à tirer vers le bas :
Code:
=SOMMEPROD((LIGNE(INDIRECT(DATEVAL("15/11/"&ANNEE(A2)-1)&":"&DATEVAL("15/3/"&ANNEE(B2)+1)))>=A2)*(LIGNE(INDIRECT(DATEVAL("15/11/"&ANNEE(A2)-1)&":"&DATEVAL("15/3/"&ANNEE(B2)+1)))<=B2))
A+
 

Pièces jointes

  • Datedif Période hivernale.xlsb
    8.1 KB · Affichages: 14

Discussions similaires

Réponses
9
Affichages
780
Réponses
0
Affichages
359
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…