Nombre de jours fériés sous condition

Bonjour le forum

je cherche une méthode pour cumuler les jours fériés pour chaque mois d'une année (paramétrable) mais avec deux conditions :

1- Ne pas les compter lorsqu'ils tombent un dimanche

2- Ne pas les compter lorsqu'ils tombent un samedi et un dimanche ; pour ce dernier cas, le fun serait de pouvoir paramétrer un autre jour que le samedi.

J'ai mis un exemple en pièce jointe.

29calculs-date.xlsx (10.46 Ko)

Merci pour votre aide, j'ai testé pas mal de méthode NB.SI, ... mais sans réussite.

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Bonsoir le forum,

E2 :

=SOMMEPROD((--(MOIS($A$2:$A$13)=LIGNE()-1))*($B$2:$B$13<>"DIM"))

F2 :

=SOMMEPROD((--(MOIS($A$2:$A$13)=LIGNE()-1))*($B$2:$B$13<>"DIM")*($B$2:$B$13<>"SAM"))

E18 :

=SOMMEPROD((--(MOIS($A$18:$A$29)=LIGNE()-17))*($B$18:$B$29<>"DIM"))

F18 :

=SOMMEPROD((--(MOIS($A$18:$A$29)=LIGNE()-17))*($B$18:$B$29<>"DIM")*($B$18:$B$29<>"SAM"))
jours feries

Bonjour,

Une autre approche à partir de l'observation qu'en ce qui concerne les fériés fixes, pour 7 d'entre eux, les jours de la semaine occupés sont en rapport fixe. Si le 1er mai (le premier d'entre eux) est un dimanche, le 8 mai et le 25 décembre seront aussi un dimanche, le 15 août sera un lundi, le 1er novembre un mardi, le 14 juillet un jeudi et le 11 novembre un vendredi.

Lorsque le 1er mais passe au lundi, tous ces autres jours se décalent de la même façon. On a donc 7 répartitions possibles de ces jours que l'on peut établir en correspondance avec le jour du 1er mai...

Pour le 8e férié fixe, le 1er janvier, il tombera le même jour que le 25 décembre de l'année précédente (donc que le 1er mai de ladite année). En année normale, ce sera le jour de la semaine précédant le jour du 1er mai de l'année en cours, soit le 1er mai étant un dimanche, le 1er janvier est un samedi. Mais il se décale d'un jour en année bissextile, dans ce cas si le 1er mai est un dimanche, le 1er janvier sera un vendredi (comme c'est le cas en 2016). On conserve donc une correspondance avec la répartition précédente en introduisant une variante selon que l'année est bissextile ou pas.

Quand aux fériés mobiles (dépendant de la date de Pâques), ils tombent toujours le même jour de la semaine. En laissant de côté Pâques et Pentecôte (dimanche) leurs lendemains sont des lundis et l'ascension est toujours un jeudi.

Sur l'année 3 fériés mobiles s'ajoutent aux fériés fixes à prendre en compte.

Leur répartition sur les mois est à appécier selon les variations de la date de Pâques. Celle-ci peut aller du 22 mars au 25 avril.

Au 22 mars, les 3 fériés mobiles se répartissent également en mars (23), avril (30) et mai (11).

Mais dès le 23 mars, l'Ascension passant au 1er mai, on en aura 1 jour en mars et 2 en mai.

(Noter que si Pâques est le 23 ou le 30 mars, l'Ascension est sur un férié fixe, ce qui fait donc un férié de moins...)

A partir du 31 mars, le lundi de Pâques passe au 1er avril : 1 jour en avril, 2 en mai.

A partir du 12 avril, c'est le lundi de Pentecôte qui passe au 1er juin : répartition avril, mai, juin.

Et à partir du 23 avril, l'Ascension arrive au 1er juin : 1 en avril, 2 en juin.

A partir de ces éléments, on peut bâtir des fonctions personnalisées. Une fonction donnant la date de Pâques (à voir dans le classeur), une autre renvoyant True ou False selon que l'année est bissextile ou non. Ces fonctions étant utilisées par celles dénombrant les fériés...

Function BISSEXT(an As Integer) As Boolean
    Dim a%
    Application.Volatile
    a = IIf(an Mod 100, an Mod 100, an \ 100)
    BISSEXT = (a Mod 4 = 0)
End Function

On peut construire ainsi deux fonctions : NBFESDI qui compte les jours fériés en excluant les dimanches (voir dans le classeur) et NBFESSADI qui les compte en excluant les samedis et dimanches.

Function NBFESSADI(a As Integer, Optional m As Integer = 0) As Integer
    Dim d As Date, jref%, n%
    Application.Volatile
    jref = Weekday(DateSerial(a, 5, 1))
    Select Case m
        Case 0
            n = IIf(jref Mod 7 < 2, 7, 9)
            If jref = 4 Or jref = 5 Then n = n + 1
        Case 1
            If jref > 2 Then n = 1
        Case 2, 9, 10
            n = 0
        Case 5, 12
            If jref Mod 7 > 1 Then n = IIf(m = 5, 2, 1)
        Case 7
            If jref < 3 Or jref > 4 Then n = 1
        Case 8
            If jref < 6 Then n = 1
        Case 11
            n = IIf(jref Mod 3 = 1, 2, 1)
    End Select
    If m > 2 And m < 7 Then
        d = JPAQUES(a)
        Select Case m
            Case 3
                If d < DateSerial(a, 3, 31) Then n = 1
            Case 4
                If d = DateSerial(a, 3, 22) Or d >= DateSerial(a, 3, 31) Then n = 1
            Case 5
                If d < DateSerial(a, 4, 23) Then n = n + 1
                If d > DateSerial(a, 3, 22) And d < DateSerial(a, 4, 12) Then n = n + 1
                If d = DateSerial(a, 3, 23) Or d = DateSerial(a, 3, 30) Then n = n - 1
            Case 6
                If d >= DateSerial(a, 4, 12) Then n = 1
                If d >= DateSerial(a, 4, 23) Then n = n + 1
        End Select
    End If
    If m = 0 Or m = 1 Then
        If BISSEXT(a) Then
            If jref = 1 Then n = n + 1
            If jref = 3 Then n = n - 1
        End If
    End If
    NBFESSADI = n
End Function

Les arguments à fournir à la fonction sont l'année et le mois, ce dernier étant optionnel (si omis, la fonction renvoie le nombre pour l'année).

Cordialement.

Bonjour le forum et merci aux contributions.

Je ne comprends pas celle de MBBP, j'ai surligné sur les captures suivantes mes interrogations :

capture

Ligne 6, c'est un Jeudi, pourquoi le résultat est 2 alors que l'on devrait trouver 1 ?

Lignes 10 et 11, on devrait trouver 1 puisque ce sont des Lun et Ven.

capture1

Ligne 20, idem Ligne 10 et 11.

Ligne 21, pourquoi trouvez vous 4 et 2 ?

Merci d'avance pour votre explication...

Bonjour faudouy toutes et tous,

Les formules de mbbp fonctionne très bien, c'est toi qui met en colonne "D" des mois qui ne correspondes pas aux dates de de la colonne "A".

En colonne "D" tu peux écrire cette formule.

=TEXTE(A2;"mmmm")

et la tiret vers le bas.

Cordialement.

Re,

Si tu veux le cumul par mois avec des formules, voici ma proposition.

Cordialement.

Bonjour mdo100,

faudouy a écrit :

je cherche une méthode pour cumuler les jours fériés pour chaque mois d'une année .

feries

Bonjour MDO100 , toutes et tous...

Mon fichier d'origine n'est pas celui repris par MDP et je viens de m'en rendre compte ; effectivement les mois ne sont pas corrects mais ils le sont dans mon fichier d'origine dont voici une copie d'écran :

capture

J'ai toujours les mêmes questions, je ne comprends pas les résultats dans les lignes de mon message précédent.

Fichier en piece jointe.

merci encore pour votre aide,

9calculs-date.xlsx (12.10 Ko)

Tu cultives la confusion ! Ton tableau ne manque pas d'erreurs !

Re,

Salut l'ami MFerrand,

Regarde ci cela correspond à ta demande.

As-tu regardé la solution de MFerrand par VBA, elle est intéressante, moi je l'ais mise sous le coude.

Cordialement.

Re, re,

Et pour afficher sans erreur les "Jour, Mois, N° de jour" voici le fichier avec les formules correspondantes.

Cordialement.

Bonjour à toutes et à tous,

Pour le fun et certainement hors sujet.

J'ai découvert que l'on pouvait intégrer une liste déroulante dans les en-têtes d'un tableau...

Sinon, proposition habituelle, tableau, TCD, tout ce que aime MFerrand.

Cdlt.

12jours-feries.xlsm (26.42 Ko)

Salut Jean-Eric !

C'est vrai que je m'accomode souvent mal avec ces ingrédients mais je dois reconnaître leur efficacité lorsqu'ils sont manipulés par des mains expertes !

Je finirais bien par me familiariser un peu plus avec un jour ou l'autre... mais j'ai tendance à remettre à plus tard !

Bonne journée à toi.

Rechercher des sujets similaires à "nombre jours feries condition"