Bonjour le forum

Voici une fonction polyvalente, sans calendrier fixe, qui dispense de la tenue d’un calendrier des jours fériés :

Selon l'utilisation :
  • Elle détermine si une date donnée est fériée et renvoie un boolean.
  • Elle renvoie un tableau des jours fériés, compris entre deux dates, utilisable avec les fonctions d'Excel acceptant un tableau de dates.
  • Elle gère les spécificités régionales par un paramètre optionnel pour la région.
  • Elle est utilisable en feuille de calcul, en MFC ou par VBA.
  • La version 2.0 a intégré le choix du pays, France, Belgique, Suisse et Luxembourg. Un paramètre optionnel a été ajouté pour la gestion des jours chômés spécifiques à la Suisse et les cantons sont gérés par le paramètre régional.
  • La version 3.0 la rend utilisable en fonction matricielle renvoyant un tableau horizontal ou vertical, compatible matricielles standards et matricielles dynamiques Excel 365. La gestion des #N/A en calcul matriciel standard est intégrée dans la fonction.
    Cette nouvelle fonctionnalité permet de remplacer facilement, dans un fichier existant, un tableau des jours fériés à mise à jour manuelle par un tableau des jours fériés entièrement automatisé ( voir fichier joint ).
  • La version 3.3 intègre en option la possibilité de renvoyer les libellés des jours fériés. Elle permet de faire un listing détaillé des jours fériés, libellés et dates, voir fichiers exemples.
Cette fonction gère tous les jours fériés à date fixe et tous les jours fériés à date mobile déterminés par le dimanche de Pâques de l’année ( testé jusqu'à 2099 ) ou par la spécificité régionale. Elle comprend un paramétrage optionnel du lundi de Pentecôte (pour la France) et des jours fériés régionaux. Elle dispense de la tenue d'un calendrier des jours fériés pour les calculs, les MFC ou l'établissement de plannings/calendriers.

J'ai mis dans le fichier joint « Exemples utilisation TJF en formules en MFC en détermination de jours fériés.Xlsm », pour les quatre pays, des exemples d'utilisation avec NB, NB.JOURS.OUVRES, NB.JOURS.OUVRES.INTL, des MFC et des déterminations de jour férié.
Dans le fichier joint « Exemples utilisation en matricielles standard ou dynamiques 365 horizontales ou verticales.Xlsm », j’ai mis des exemple de formules matricielles standard toutes version d'Excel et matricielles dynamiques horizontales et verticales pour 365.

Fonction personnalisée utilisable en VBA, en formules (y compris encapsulée) et en MFC.

Bien cordialement, @+

Code de la fonction
Code:
Function TJF(ByVal DateDeb, Optional ByVal DateFin = 0, Optional Pays% = 33, Optional Region$ = "", Optional Lun_Pent As Boolean = 1, Optional Jour_Chome As Boolean = 0, Optional MDV As Boolean = 0, Optional Lib As Boolean = 0) As Variant
'********************************************************************************************************************
'                                                      Fonction TJF, jours fériés automatiques
'                                                      Auteur: Yeahou sur Exceldownloads
'Selon l 'utilisation :
'Elle détermine si une date donnée est fériée et renvoie un boolean.
'Elle renvoie un tableau des jours fériés, compris entre deux dates, utilisable avec les fonctions d'Excel acceptant un tableau de dates.
'Elle gère les spécificités régionales par un paramètre optionnel pour la région.
'La version 2.0 a intégré le choix du pays, France, Belgique, Suisse et Luxembourg. Un paramètre optionnel a été ajouté pour la gestion des jours chômés spécifiques à la Suisse et les cantons sont gérés par le paramètre régional.
'La version 3.0 l'a rendue utilisable en fonction matricielle renvoyant un tableau horizontal ou vertical, compatible matricielles standards et matricielles dynamiques Excel 365. La gestion des #N/A en calcul matriciel standard est intégrée dans la fonction.
'Cette fonctionnalité permet de remplacer facilement, dans un fichier existant, un tableau des jours fériés à mise à jour manuelle par un tableau des jours fériés entièrement automatisé ( voir fichier joint ).
'La version 3.3 a intègré en option la possibilité de renvoyer les libellés des jours fériés. Elle permet de faire un listing détaillé des jours fériés, libellés et dates, voir fichiers exemples.
'
'Utilisable en formule (y compris encapsulée), par les fonctions de feuille acceptant un tableau, en MFC, par VBA, en matricielles standards (gestion des #N/A intégrée) et en matricielles dynamiques 365
'Cette fonction gère tous les jours fériés à date fixe et tous les jours fériés à date mobile déterminés par le dimanche de Pâques de l’année ( testé jusqu'à 2099 ) ou par la spécificité régionale. Elle comprend un
'paramétrage optionnel du lundi de Pentecôte (pour la France) et des jours fériés régionaux. Elle dispense de la tenue d'un calendrier des jours fériés pour les calculs, les MFC ou l'établissement de plannings/calendriers.
'France par défaut (avec régions), paramétrage optionnel du pays : Belgique (avec communauté), Suisse (avec cantons) ou Luxembourg
'
'évolution des versions
'Fonction TJF V1.0 , Yeahou, simplification de la formule de calcul du Dimanche de Pâques par patricktoulon
'Fonction TJF V1.1 , Yeahou, correction des jours fériés DOMCOM
'Fonction TJF V2.0 , Yeahou, ajout du choix de pays, ajout de la Belgique, ajout de la Suisse, ajout du Luxembourg
'Fonction TJF V2.1 , Yeahou, réglement d'un bug sur les calculs de jours mobiles pour la Suisse et d'un bug sur le retour tableau en cas d'absence de jour férié sur la période définie
'Fonction TJF V2.3 , Yeahou, amélioration du calcul des jours mobiles pour la Suisse
'Fonction TJF V2.4 , Yeahou, réglement d'un bug de traitement des dates de début et de fin passés en paramètre, en nombre dans une feuille de calcul
'Fonction TJF V3.0 , Yeahou, intégration des formules matricielles horizontales et verticales avec une gestion des #N/A intégrée dans la fonction, compatible formules matricielles standard et matricielles dynamiques Excel 365
'Fonction TJF V3.1 , Yeahou, amélioration de la gestion des matricielles dynamiques Excel 365
'Fonction TJF V3.2 , Yeahou, ajout des libellés des jours fériés
'Fonction TJF V3.3 , Yeahou, ajout traitement des libellés des jours fériés en mode test une journée
'Fonction TJF V3.4 , Yeahou, amélioration du retour TJF en cas d'absence de jours fériés sur une période
'Fonction TJF V3.5 , Yeahou, optimisation du code et suppression de la redondance du calcul des jours mobiles religieux
'Fonction TJF V3.6 , Yeahou, suppression de la redondance du calcul des jours mobiles pour la suisse
'Fonction TJF V3.7 , Yeahou, optimisation des portées matricielles
'Fonction TJF V3.8 , Yeahou, tous les séparateurs de date par défaut sont gérés (obsolète en 3.9)
'Fonction TJF V3.9 , Yeahou, comparaisons de dates en entier DDMM
'Fonction TJF V3.92 , Yeahou, diverses petites corrections et améliorations

'si DateFin est omis, teste si la journée est fériée et renvoie un boolean
'Renvoie un tableau des jours fériés compris entre deux dates utilisable avec les fonctions d'Excel acceptant un tableau de dates exemple : NB.JOURS.OUVRES
'Pays : paramétrage optionnel du pays, 33 ou omis France, 32 Belgique, 41 Suisse, 352 Luxembourg
'Region : paramétrage optionnel de la région pour les jours fériés régionaux, inactif par défaut
'Lun_Pent : paramétrage optionnel du Lundi de Pentecôte pour la France, actif par défaut
'Jour_Chome : paramétrage optionnel pour l'intégration des jours chômés spécifiques à la suisse, inactif par défaut
'MDV : paramétrage optionnel pour l'orientation des matricielles dynamiques d'Excel 365 (0 ou omis pour horizontale, 1 pour verticale)
'Lib : report des libellés des jours fériés au lieu des dates en mode tableau ou d'un boolean en mode journée, inactif par défaut

'Paramètre Région

'Régions pour la France
'Region = "" ou omis => standard métropole (sauf Alsace-Moselle)
'Region = "ALM" => Alsace-Moselle
'Region = "GSM" => Guadeloupe & Saint-Martin
'Region = "GUY" => Guyane
'Region = "REU" => la Réunion
'Region = "MAR" => Martinique
'Region = "MAY" => Mayotte
'Region = "STB" => Saint-Barthélemy
'Region = "NCA" => Nouvelle-Calédonie
'Region = "POF" => Polynésie française
'Region = "WEF" => Wallis et Futuna

'Communautés pour la Belgique
'Region = "" ou omis => standard Belgique
'Region = "SID" => sidérurgie, la Saint Éloi (premier décembre) remplace le 11 novembre
'Region = "FLA" => Communauté Flamande
'Region = "FRA" => Communauté Française
'Region = "FLS" => Communauté Flamande et sidérurgie, la Saint Éloi (premier décembre) remplace le 11 novembre
'Region = "FRS" => Communauté Française et sidérurgie, la Saint Éloi (premier décembre) remplace le 11 novembre

'Cantons pour la Suisse
'Region = "AG" >= Argovie
'Region = "AI" => Appenzell Rhodes-Intérieures
'Region = "AR" => Appenzell Rhodes-Extérieures
'Region = "BE" >= Berne
'Region = "BL" >= Bâle - Campagne
'Region = "BS" >= Bâle - Ville
'Region = "FR" >= Fribourg
'Region = "GE" >= Genève
'Region = "GL" >= Glaris
'Region = "GR" >= Grisons
'Region = "JU" >= Jura
'Region = "LU" >= Lucerne
'Region = "NE" >= Neuchâtel
'Region = "NW" >= Nidwald
'Region = "OW" >= Obwald
'Region = "SG" >= Saint - Gall
'Region = "SH" >= Schaffhouse
'Region = "SO" >= Soleure
'Region = "SZ" >= Schwytz
'Region = "TG" >= Thurgovie
'Region = "TI" >= Tessin
'Region = "UR" >= Uri
'Region = "VD" >= Vaud
'Region = "VS" >= Valais
'Region = "ZG" >= Zoug
'Region = "ZH" >= Zurich

'''utilisation TJF en VBA
''
'''pour déterminer si une journée est fériée
''Sub demo1()
''    Dim Date_Test
''    Date_Test = InputBox("Entrez une date en format jj/mm/aaaa ou en valeur", "Demande", "13/05/2021")
''    If IsDate(Date_Test) Or IsNumeric(Date_Test) Then MsgBox "Le " & Format(Date_Test, "dddd dd mmmm yyyy") & " est férié : " & vbLf & vbLf & TJF(Date_Test), vbOKOnly + vbInformation _
''        Else: MsgBox "La valeur :" & vbLf & Date_Test & vbLf & " n'est pas une date valide", vbOKOnly + vbInformation
''End Sub
'''pour récupérer un libellé
''Sub demo2()
''    Dim Date_Test
''    Date_Test = InputBox("Entrez une date en format jj/mm/aaaa ou en valeur", "Demande", "13/05/2021")
''    If IsDate(Date_Test) Or IsNumeric(Date_Test) Then MsgBox "Le " & Format(Date_Test, "dddd dd mmmm yyyy") & " est férié : " & vbLf & vbLf & TJF(Date_Test) & IIf(TJF(Date_Test), ", ", "") & TJF(DateDeb:=Date_Test, Lib:=True), vbOKOnly + vbInformation _
''        Else: MsgBox "La valeur :" & vbLf & Date_Test & vbLf & " n'est pas une date valide", vbOKOnly + vbInformation
''End Sub
'''pour récupérer un tableau vb des jours fériés
''Sub demo3()
''    Dim Tablo, Tablo2$(), x&
''    Dim Date_Deb, Date_Fin
''    'définition des dates de début et fin de période en nombre ou en valeur
''    Date_Deb = "01/01/2021": Date_Fin = "31/12/2022"
''    Date_Deb = InputBox("Entrez une date de début en format jj/mm/aaaa ou en valeur", "Demande", Date_Deb)
''    Date_Fin = InputBox("Entrez une date de fin en format jj/mm/aaaa ou en valeur", "Demande", Date_Fin)
''    If (IsDate(Date_Deb) Or IsNumeric(Date_Deb)) And (IsDate(Date_Fin) Or IsNumeric(Date_Fin)) Then
''        'récupération en tableau
''        Tablo = TJF(Date_Deb, Date_Fin)
''        If Not Tablo(LBound(Tablo)) = "" Then
''            ReDim Tablo2(LBound(Tablo) To UBound(Tablo))
''            For x = LBound(Tablo2) To UBound(Tablo2)
''                Tablo2(x) = Format(Tablo(x), "dddd dd mmmm yyyy")
''            Next x
''            If Not Tablo2(1) = "" Then MsgBox "Il y a " & UBound(Tablo2) - LBound(Tablo2) + 1 & " jours fériés sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy") & " : " & vbLf & vbLf & Join(Tablo2, vbLf), vbOKOnly + vbInformation
''        Else
''            MsgBox "Il y a aucun jour férié sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy"), vbOKOnly + vbInformation
''        End If
''    End If
''End Sub
'''pour récupérer un tableau vb des jours fériés avec leurs libellés
''Sub demo4()
''    Dim Tablo, Tablo2$(), Tablo3, x&
''    Dim Date_Deb, Date_Fin
''    'définition des dates de début et fin de période en nombre ou en valeur
''    Date_Deb = "01/01/2021": Date_Fin = "31/12/2022"
''    Date_Deb = InputBox("Entrez une date de début en format jj/mm/aaaa ou en valeur", "Demande", Date_Deb)
''    Date_Fin = InputBox("Entrez une date de fin en format jj/mm/aaaa ou en valeur", "Demande", Date_Fin)
''    If (IsDate(Date_Deb) Or IsNumeric(Date_Deb)) And (IsDate(Date_Fin) Or IsNumeric(Date_Fin)) Then
''        'récupération en tableaux
''        Tablo = TJF(Date_Deb, Date_Fin)
''        If Not Tablo(LBound(Tablo)) = "" Then
''            Tablo3 = TJF(DateDeb:=Date_Deb, DateFin:=Date_Fin, Lib:=1)
''            ReDim Tablo2(LBound(Tablo) To UBound(Tablo))
''            For x = LBound(Tablo2) To UBound(Tablo2)
''                Tablo2(x) = Format(Tablo(x), "dddd dd mmmm yyyy") & ", " & Tablo3(x)
''            Next x
''            MsgBox "Il y a " & UBound(Tablo2) - LBound(Tablo2) + 1 & " jours fériés sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy") & " : " & vbLf & vbLf & Join(Tablo2, vbLf), vbOKOnly + vbInformation
''        Else
''            MsgBox "Il y a aucun jour férié sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy"), vbOKOnly + vbInformation
''        End If
''    End If
''End Sub
'''pour récupérer un tableau vb des jours fériés avec leurs libellés, Suisse, Canton de Genève, jours chomés intégrés aux jours fériés
''Sub demo4B()
''    Dim Tablo, Tablo2$(), Tablo3, x&
''    Dim Date_Deb, Date_Fin
''    'définition des dates de début et fin de période en nombre ou en valeur
''    Date_Deb = "01/01/2021": Date_Fin = "31/12/2022"
''    Date_Deb = InputBox("Entrez une date de début en format jj/mm/aaaa ou en valeur", "Demande", Date_Deb)
''    Date_Fin = InputBox("Entrez une date de fin en format jj/mm/aaaa ou en valeur", "Demande", Date_Fin)
''    If (IsDate(Date_Deb) Or IsNumeric(Date_Deb)) And (IsDate(Date_Fin) Or IsNumeric(Date_Fin)) Then
''        'récupération en tableaux
''        Tablo = TJF(DateDeb:=Date_Deb, DateFin:=Date_Fin, Pays:=41, Region:="GE", Jour_Chome:=1)
''        If Not Tablo(LBound(Tablo)) = "" Then
''            Tablo3 = TJF(DateDeb:=Date_Deb, DateFin:=Date_Fin, Pays:=41, Region:="GE", Jour_Chome:=1, Lib:=1)
''            ReDim Tablo2(LBound(Tablo) To UBound(Tablo))
''            For x = LBound(Tablo2) To UBound(Tablo2)
''                Tablo2(x) = Format(Tablo(x), "dddd dd mmmm yyyy") & ", " & Tablo3(x)
''            Next x
''            MsgBox "Il y a " & UBound(Tablo2) - LBound(Tablo2) + 1 & " jours fériés/chômés pour le Canton de Genève sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy") & " : " & vbLf & vbLf & Join(Tablo2, vbLf), vbOKOnly + vbInformation
''        Else
''            MsgBox "Il y a aucun jour férié/chômé pour le Canton de Genève sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy"), vbOKOnly + vbInformation
''        End If
''    End If
''End Sub
'********************************************************************************************************************
Region = UCase(Region)
'vérification des arguments Pays et Région
Select Case Pays
    Case 33 'France
        Select Case Region
        Case "", "ALM", "GSM", "GUY", "REU", "MAR", "MAY", "STB", "NCA", "POF", "WEF"
        Case Else
            TJF = "Argument Région " & Chr(34) & Region & Chr(34) & " incorrect": Exit Function
        End Select
    Case 32 'Belgique
        Select Case Region
        Case "", "FRA", "FLA", "SID", "FRS", "FLS"
        Case Else
            TJF = "Argument Région " & Chr(34) & Region & Chr(34) & " incorrect": Exit Function
        End Select
    Case 41 'Suisse
        Select Case Region
        Case "AG", "AI", "AR", "BE", "BL", "BS", "FR", "GE", "GL", "GR", "JU", "LU", "NE", "NW", "OW", "SG", "SH", "SO", "SZ", "TG", "TI", "UR", "VD", "VS", "ZG", "ZH"
            Dim Date_Ref As Date, Num_Cible As Byte, Jour_Sem As Byte, Decal_Jour%, Mois_Ref As Byte 'valeurs
            Dim Fahrtsfest%, Jeune_Genevois%, Lundi_du_Jeune_Federal%, Fete_Dieu% 'fêtes mobiles
        Case Else
            TJF = "Argument Région " & Chr(34) & Region & Chr(34) & " incorrect": Exit Function
        End Select
    Case 352 'Luxembourg
    Case Else
        TJF = "Argument Pays " & Chr(34) & Pays & Chr(34) & " incorrect": Exit Function
End Select
Dim Test_J As Boolean
'concordance des dates
If IsDate(DateDeb) And IsDate(DateFin) Then
    Select Case CDate(DateFin)
        Case 0
            DateFin = DateDeb
            Test_J = True
        Case Is < CDate(DateDeb)
            TJF = "Date de fin inférieure à la date de début": Exit Function
        Case Else
    End Select
Else
    Select Case DateFin
        Case 0
            DateFin = DateDeb
            Test_J = True
        Case Is < DateDeb
            TJF = "Date de fin inférieure à la date de début": Exit Function
        Case Else
    End Select
End If
Dim Annee%, DateX As Date, LibJF$, Val1%  'valeurs
Dim JF() As Date, JF2(), LibTJF$() 'tableaux
Dim Dim_Paques As Date, Ven_Saint%, Lun_Paques%, Ascension%, Pentecote% 'fêtes mobiles
Dim Premier_An%, Premier_Mai%, Assomption%, Toussaint%, Noel%, Saint_Etienne%, Armistice% 'fêtes fixes communes
'définition des fêtes fixes communes
Premier_An = 101: Premier_Mai = 105: Assomption = 1508: Toussaint = 111: Armistice = 1111: Noel = 2512: Saint_Etienne = 2612
For DateX = DateDeb To DateFin
    If Not Annee = Year(DateX) Then 'calcul du Dimanche de Pâques et des fêtes mobiles sur changement d'année de DateX
        Annee = Year(DateX)
        Dim_Paques = CDate(((Round(DateSerial(Annee, 4, (234 - 11 * (Annee Mod 19)) Mod 30) / 7, 0) * 7) - 6)) 'simplification du calcul originel du dimanche de Pâques by patricktoulon
        Ven_Saint = CInt(Format(Dim_Paques - 2, "ddmm")) 'Calcul Vendredi Saint, vendredi précédant le Dimanche de Pâques
        Lun_Paques = CInt(Format(Dim_Paques + 1, "ddmm")) 'Calcul Lundi de Pâques, lundi suivant le Dimanche de Pâques
        Ascension = CInt(Format(Dim_Paques + 39, "ddmm")) 'Calcul Ascension, 39 jours après le Dimanche de Pâques
        Pentecote = CInt(Format(Dim_Paques + 50, "ddmm")) 'Calcul Pentecôte, 50 jours après le Dimanche de Pâques
        If Pays = 41 Then
            Fete_Dieu = CInt(Format(Dim_Paques + 60, "ddmm"))  'Calcul Fête Dieu, 60 jours après le Dimanche de Pâques
            'Calcul Fahrtsfest, Premier jeudi d'avril
            Jour_Sem = 4: Mois_Ref = 4: Num_Cible = 1 'premier jeudi d'avril
            Date_Ref = DateSerial(Year:=Annee, Month:=Mois_Ref, Day:=1)
            Decal_Jour = Jour_Sem - Weekday(Date_Ref, 2): If Decal_Jour >= 0 Then Decal_Jour = Decal_Jour - 7
            Fahrtsfest = CInt(Format(Date_Ref + Decal_Jour + (Num_Cible * 7), "ddmm"))  'Calcul Fahrtsfest, Premier jeudi d'avril
            'Calcul Jeûne genevois, jeudi suivant le 1er dimanche de septembre
            Jour_Sem = 7: Mois_Ref = 9: Num_Cible = 1 'premier dimanche de septembre
            Date_Ref = DateSerial(Year:=Annee, Month:=Mois_Ref, Day:=1)
            Decal_Jour = Jour_Sem - Weekday(Date_Ref, 2): If Decal_Jour >= 0 Then Decal_Jour = Decal_Jour - 7
            Jeune_Genevois = CInt(Format(Date_Ref + Decal_Jour + (Num_Cible * 7) + 4, "ddmm"))  'Calcul Jeûne genevois, premier dimanche de septembre + 4 jours pour le jeudi
            'Calcul Lundi du Jeûne fédéral, lundi suivant le 3e dimanche de septembre
            Jour_Sem = 7: Mois_Ref = 9: Num_Cible = 3 'troisième dimanche de septembre
            Date_Ref = DateSerial(Year:=Annee, Month:=Mois_Ref, Day:=1)
            Decal_Jour = Jour_Sem - Weekday(Date_Ref, 2): If Decal_Jour >= 0 Then Decal_Jour = Decal_Jour - 7
            Lundi_du_Jeune_Federal = CInt(Format(Date_Ref + Decal_Jour + (Num_Cible * 7) + 1, "ddmm"))  'Calcul Lundi du Jeûne fédéral, troisième dimanche de septembre + 1 jour pour le lundi
        End If
    End If
    LibJF = ""
    Select Case Pays
    Case 33 'France
        Select Case CInt(Format(DateX, "ddmm"))
            Case Premier_An 'commun,Premier janvier
                LibJF = "Premier janvier"
            Case Lun_Paques 'commun,Lundi de Pâques
                LibJF = "Lundi de Pâques"
            Case Premier_Mai 'commun, Fête du travail
                LibJF = "Fête du travail"
            Case 805 'commun, Victoire des alliés
                LibJF = "Victoire des alliés"
            Case Ascension 'commun, Jeudi de l'Ascension
                LibJF = "Jeudi de l'Ascension"
            Case Pentecote 'commun,Lundi de Pentecôte
                If Lun_Pent Then LibJF = "Lundi de Pentecôte"
            Case 1407 'commun, Fête nationale
                LibJF = "Fête nationale"
            Case Assomption 'commun, Assomption
                LibJF = "Assomption"
            Case Toussaint 'commun, Toussaint
                LibJF = "Toussaint"
            Case Armistice 'commun, Armistice
                LibJF = "Armistice"
            Case Noel 'commun, Noël
                LibJF = "Noël"
            Case Ven_Saint 'Alsace Moselle, Vendredi Saint
                If Region = "ALM" Then LibJF = "Vendredi Saint"
            Case Saint_Etienne  'Alsace Moselle, Saint Etienne
                If Region = "ALM" Then LibJF = "Saint Etienne"
            Case 2705  'Guadeloupe & Saint-Martin, Abolition de l'esclavage
                If Region = "GSM" Then LibJF = "Abolition de l'esclavage"
            Case 1006 'Guyane, Abolition de l'esclavage
                If Region = "GUY" Then LibJF = "Abolition de l'esclavage"
            Case 2012 'La Réunion, Abolition de l'esclavage
                If Region = "REU" Then LibJF = "Abolition de l'esclavage"
           Case 2205 'Martinique, Abolition de l'esclavage
                If Region = "MAR" Then LibJF = "Abolition de l'esclavage"
            Case 2704 'Mayotte, Abolition de l'esclavage
                If Region = "MAY" Then LibJF = "Abolition de l'esclavage"
            Case 910 'Saint-Barthélemy, Abolition de l'esclavage
                If Region = "STB" Then LibJF = "Abolition de l'esclavage"
            Case 2409 'Nouvelle-Calédonie, Fête de la citoyenneté
                If Region = "NCA" Then LibJF = "Fête de la citoyenneté"
            Case 503 'Polynésie française, Arrivée de l'Évangile
                If Region = "POF" Then LibJF = "Arrivée de l'Évangile"
            Case 2906 'Polynésie française, Fête de l’autonomie
                If Region = "POF" Then LibJF = "Fête de l’autonomie"
            Case 2804 'Wallis et Futuna, Saint Pierre Chanel
                If Region = "WEF" Then LibJF = "Saint Pierre Chanel"
            Case 2907  'Wallis et Futuna, Fête du territoire
                If Region = "WEF" Then LibJF = "Fête du territoire"
        End Select
    Case 32 'Belgique
        Select Case CInt(Format(DateX, "ddmm"))
            Case Premier_An 'commun,Premier janvier
                LibJF = "Premier janvier"
            Case Lun_Paques 'commun,Lundi de Pâques
                LibJF = "Lundi de Pâques"
            Case Premier_Mai 'commun, Fête du travail
                LibJF = "Fête du travail"
            Case Ascension 'commun, Jeudi de l'Ascension
                LibJF = "Jeudi de l'Ascension"
            Case Pentecote 'commun,Lundi de Pentecôte
                LibJF = "Lundi de Pentecôte"
            Case 2107 'commun, Fête nationale
                LibJF = "Fête nationale"
            Case Assomption 'commun, Assomption
                LibJF = "Assomption"
            Case Toussaint 'commun, Toussaint
                LibJF = "Toussaint"
            Case Armistice 'Armistice
                Select Case Region
                    Case "SID", "FLS", "FRS"
                    Case Else
                        LibJF = "Armistice"
                End Select
            Case 112 'Saint Éloi, sidérurgie
                Select Case Region
                    Case "SID", "FLS", "FRS"
                        LibJF = "Saint Éloi"
                End Select
            Case Noel 'commun, Noël
                LibJF = "Noël"
            Case 1107 'Communauté Flamande
                Select Case Region
                    Case "FLA", "FLS"
                        LibJF = "Communauté Flamande"
                End Select
            Case 2709 'Communauté Française
                Select Case Region
                    Case "FRA", "FRS"
                        LibJF = "Communauté Française"
                End Select
        End Select
    Case 41 'Suisse
        Select Case CInt(Format(DateX, "ddmm"))
            Case Premier_An 'commun,Premier janvier
                LibJF = "Premier janvier"
            Case 201  'Saint Berchtold
                Select Case Region
                    Case "AG", "BE", "JU", "VD", "ZG"
                        LibJF = "Saint Berchtold"
                    Case "NE"
                        If Application.Weekday(DateX - 1, 2) = 7 Then LibJF = "Saint Berchtold(dimanche 01/01)"
                    Case Else
                        If Jour_Chome Then
                            Select Case Region
                                Case "FR", "GL", "LU", "OW", "SH", "SO", "ZH"
                                    LibJF = "Saint Berchtold, chômé"
                                Case Else
                            End Select
                        End If
                End Select
            Case 601 'Épiphanie
                Select Case Region
                    Case "SZ", "TI", "UR"
                        LibJF = "Épiphanie"
                    Case Else
                End Select
            Case 103 'Instauration de la République
                If Region = "NE" Then LibJF = "Instauration de la République"
            Case 1903 'Saint Joseph
                Select Case Region
                    Case "LU", "NW", "SZ", "TI", "UR", "VS"
                        LibJF = "Saint Joseph"
                    Case Else
                End Select
            Case Fahrtsfest 'Fahrtsfest, Premier jeudi d'avril
                If Region = "GL" Then LibJF = "Fahrtsfest"
            Case Ven_Saint 'Vendredi saint
                Select Case Region
                    Case "AG", "AI", "AR", "BE", "BL", "BS", "FR", "GE", "GL", "GR", "JU", "LU", "NE", "NW", "OW", "SG", "SH", "SO", "SZ", "TG", "UR", "VD", "ZG", "ZH"
                        LibJF = "Vendredi saint"
                    Case Else
                End Select
            Case Lun_Paques 'Lundi de Pâques
                Select Case Region
                    Case "AG", "AI", "AR", "BE", "BL", "BS", "GE", "GL", "GR", "JU", "SG", "SH", "SZ", "TG", "TI", "UR", "VD", "ZH"
                        LibJF = "Lundi de Pâques"
                    Case Else
                        If Jour_Chome Then
                            Select Case Region
                                Case "FR", "LU", "NE", "NW", "OW", "SO", "VS", "ZG"
                                    LibJF = "Lundi de Pâques, chômé"
                                Case Else
                            End Select
                        End If
                End Select
            Case Premier_Mai 'Fête du travail
                Select Case Region
                    Case "BL", "BS", "JU", "NE", "SH", "TI", "UR", "ZH"
                        LibJF = "Fête du travail"
                    Case Else
                        If Jour_Chome And Region = "GE" Then LibJF = "Fête du travail, chômé"
                End Select
            Case Ascension 'commun,Jeudi de l'Ascension
                LibJF = "Jeudi de l'Ascension"
            Case Pentecote 'Lundi de Pentecôte
                Select Case Region
                    Case "AG", "AI", "AR", "BE", "BL", "BS", "GE", "GL", "GR", "JU", "SG", "SH", "SZ", "TG", "TI", "UR", "VD", "ZH"
                        LibJF = "Lundi de Pentecôte"
                    Case Else
                        If Jour_Chome Then
                            Select Case Region
                                Case "FR", "LU", "NE", "NW", "OW", "SO", "VS", "ZG"
                                    LibJF = "Lundi de Pentecôte, chômé"
                                Case Else
                            End Select
                        End If
                End Select
            Case 2306 'Commémoration du plébiscite
                If Region = "JU" Then LibJF = "Commémoration du plébiscite"
            Case Fete_Dieu 'Fête-Dieu
                Select Case Region
                    Case "AG", "AI", "FR", "JU", "LU", "NW", "OW", "SO", "SZ", "TI", "UR", "VS", "ZG"
                        LibJF = "Fête-Dieu"
                    Case Else
                End Select
            Case 2906 'Saint-Pierre et Paul
                If Region = "TI" Then LibJF = "Saint-Pierre et Paul"
            Case 108 'commun, Fête nationale
                LibJF = "Fête nationale"
            Case Assomption 'Assomption
                Select Case Region
                    Case "AG", "AI", "FR", "GR", "JU", "LU", "NW", "OW", "SO", "SZ", "TI", "UR", "VS", "ZG"
                        LibJF = "Assomption"
                    Case Else
                End Select
            Case Jeune_Genevois 'Jeûne genevois, jeudi suivant le 1er dimanche de septembre
                If Region = "GE" Then LibJF = "Jeûne genevois"
            Case Lundi_du_Jeune_Federal 'Lundi du Jeûne fédéral, lundi suivant le 3e dimanche de septembre
                If Region = "VD" Then
                    LibJF = "Lundi du Jeûne fédéral"
                Else
                    If Jour_Chome And Region = "NE" Then LibJF = "Lundi du Jeûne fédéral, chômé"
                End If
            Case 2509 'Fête de Saint-Nicolas-de-Flüe
                If Region = "OW" Then LibJF = "Fête de Saint-Nicolas-de-Flüe"
            Case Toussaint 'Toussaint
                Select Case Region
                    Case "AI", "FR", "GL", "JU", "LU", "NW", "OW", "SG", "SO", "TI", "UR", "VS", "ZG"
                        LibJF = "Toussaint"
                    Case Else
                End Select
            Case 812 'Immaculée Conception
                Select Case Region
                    Case "FR", "LU", "NW", "OW", "TI", "UR", "VS", "ZG"
                        LibJF = "Immaculée Conception"
                    Case Else
                End Select
            Case Noel 'commun, Noël
                LibJF = "Noël"
            Case Saint_Etienne 'Saint-Étienne
                Select Case Region
                    Case "AG", "AI", "AR", "BE", "BL", "BS", "GL", "GR", "LU", "SG", "SH", "SZ", "TG", "TI", "UR", "ZH"
                        LibJF = "Saint-Étienne"
                    Case "NE"
                        If Application.Weekday(DateX - 1, 2) = 7 Then LibJF = "Saint-Étienne(dimanche 25/12)"
                    Case Else
                        If Jour_Chome Then
                            Select Case Region
                                Case "FR", "NW", "OW", "SO", "ZG"
                                    LibJF = "Saint-Étienne, chômé"
                                Case Else
                            End Select
                        End If
                End Select
            Case 3112 'Restauration de la République
                If Region = "GE" Then LibJF = "Restauration de la République"
        End Select
    Case 352 'Luxembourg
        Select Case CInt(Format(DateX, "ddmm"))
            Case Premier_An 'Premier janvier
                LibJF = "Premier janvier"
            Case Lun_Paques 'Lundi de Pâques
                LibJF = "Lundi de Pâques"
            Case Premier_Mai 'Fête du travail
                LibJF = "Fête du travail"
            Case 905 'Journée de l'Europe
                LibJF = "Journée de l'Europe"
            Case Ascension 'Jeudi de l'Ascension
                LibJF = "Jeudi de l'Ascension"
            Case Pentecote 'Lundi de Pentecôte
                LibJF = "Lundi de Pentecôte"
            Case 2306 'Anniversaire du Grand Duc
                LibJF = "Anniversaire du Grand Duc"
            Case Assomption 'Assomption
                LibJF = "Assomption"
            Case Toussaint 'Toussaint
                LibJF = "Toussaint"
            Case Noel 'Noël
                LibJF = "Noël"
            Case Saint_Etienne  'Saint Etienne
                LibJF = "Saint Etienne"
        End Select
    End Select
    If Not LibJF = "" Then
        Val1 = Val1 + 1
        ReDim Preserve LibTJF(1 To Val1): LibTJF(Val1) = LibJF
        ReDim Preserve JF(1 To Val1): JF(Val1) = DateX
    End If
Next DateX
If Test_J Then
    If Lib Then TJF = LibJF Else TJF = IIf(LibJF = "", False, True)
Else
    If Val1 = 0 Then ReDim JF2(1): TJF = JF2: Exit Function
    Dim Val2%, Val3%, Val4%, Test_MD
    With Application
        '<pour initialisation matricielle dynamique>
        If Lib Then
            TJF = IIf(MDV, .Transpose&(LibTJF), LibTJF)
        Else
            TJF = IIf(MDV, .Transpose&(JF), JF)
        End If
        '</>
        If TypeName(.Caller) = "Range" Then
            .Volatile
            With .ThisCell
                If .FormulaArray = .Offset(0, 1).FormulaArray And Not MDV Then
                    Test_MD = Range(.Address & ":" & .Offset(0, 1).Address).Formula 'pour test matricielle dynamique
                    If Test_MD(1, 1) = Test_MD(1, 2) Then 'teste si matricielle non dynamique
                        For Val3 = 1 To 3000
                            If Not .FormulaArray = .Offset(0, Val3).FormulaArray Then Exit For
                        Next Val3
                    End If
                    If Val3 < Val1 Then Val3 = Val1 'pour le redimensionnement des matricielles dynamiques après modification des données d'entrée
                    ReDim JF2(1 To Val3)
                    Val4 = UBound(JF)
                    For Val2 = 1 To Val3
                        If Val2 > Val4 Or Val1 = 0 Then JF2(Val2) = "" Else JF2(Val2) = IIf(Lib, LibTJF(Val2), JF(Val2))
                    Next Val2
                    TJF = JF2
                Else
                    If .FormulaArray = .Offset(1, 0).FormulaArray Then 'teste si matricielle
                        If MDV Then
                            Val3 = Val1
                        Else
                            For Val3 = 1 To 3000
                                If Not .FormulaArray = .Offset(Val3, 0).FormulaArray Then Exit For
                            Next Val3
                        End If
                        ReDim JF2(1 To Val3)
                        Val4 = UBound(JF)
                        For Val2 = 1 To Val3
                            If Val2 > Val4 Or Val1 = 0 Then JF2(Val2) = "" Else JF2(Val2) = IIf(Lib, LibTJF(Val2), CLng(JF(Val2)))
                        Next Val2
                        TJF = Application.Transpose(JF2)
                    Else
                        '<pour matricielles dynamiques sans report de matrice ou matricielle sans portée>
                        Select Case Val1
                            Case 0
                                TJF = ""
                            Case 1
                                TJF = IIf(Lib, LibTJF, CLng(JF(1)))
                        End Select
                        '</>
                    End If
                End If
            End With
        End If
    End With
End If
End Function

exemples VBA
VB:
'utilisation TJF en VBA

'pour déterminer si une journée est fériée
Sub demo1()
    Dim Date_Test
    Date_Test = InputBox("Entrez une date en format jj/mm/aaaa ou en valeur", "Demande", "13/05/2021")
    If IsDate(Date_Test) Or IsNumeric(Date_Test) Then MsgBox "Le " & Format(Date_Test, "dddd dd mmmm yyyy") & " est férié : " & vbLf & vbLf & TJF(Date_Test), vbOKOnly + vbInformation _
        Else MsgBox "La valeur :" & vbLf & Date_Test & vbLf & " n'est pas une date valide", vbOKOnly + vbInformation
End Sub
'pour récupérer un libellé
Sub demo2()
    Dim Date_Test
    Date_Test = InputBox("Entrez une date en format jj/mm/aaaa ou en valeur", "Demande", "13/05/2021")
    If IsDate(Date_Test) Or IsNumeric(Date_Test) Then MsgBox "Le " & Format(Date_Test, "dddd dd mmmm yyyy") & " est férié : " & vbLf & vbLf & TJF(Date_Test) & IIf(TJF(Date_Test), ", ", "") & TJF(DateDeb:=Date_Test, Lib:=True), vbOKOnly + vbInformation _
        Else MsgBox "La valeur :" & vbLf & Date_Test & vbLf & " n'est pas une date valide", vbOKOnly + vbInformation
End Sub
'pour récupérer un tableau vb des jours fériés
Sub demo3()
    Dim Tablo, Tablo2$(), x&
    Dim Date_Deb, Date_Fin
    'définition des dates de début et fin de période en nombre ou en valeur
    Date_Deb = "01/01/2021": Date_Fin = "31/12/2022"
    Date_Deb = InputBox("Entrez une date de début en format jj/mm/aaaa ou en valeur", "Demande", Date_Deb)
    Date_Fin = InputBox("Entrez une date de fin en format jj/mm/aaaa ou en valeur", "Demande", Date_Fin)
    If (IsDate(Date_Deb) Or IsNumeric(Date_Deb)) And (IsDate(Date_Fin) Or IsNumeric(Date_Fin)) Then
        'récupération en tableau
        Tablo = TJF(Date_Deb, Date_Fin)
        If Not Tablo(LBound(Tablo)) = "" Then
            ReDim Tablo2(LBound(Tablo) To UBound(Tablo))
            For x = LBound(Tablo2) To UBound(Tablo2)
                Tablo2(x) = Format(Tablo(x), "dddd dd mmmm yyyy")
            Next x
            If Not Tablo2(1) = "" Then MsgBox "Il y a " & UBound(Tablo2) - LBound(Tablo2) + 1 & " jours fériés sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy") & " : " & vbLf & vbLf & Join(Tablo2, vbLf), vbOKOnly + vbInformation
        Else
            MsgBox "Il y a aucun jour férié sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy"), vbOKOnly + vbInformation
        End If
    End If
End Sub
'pour récupérer un tableau vb des jours fériés avec leurs libellés
Sub demo4()
    Dim Tablo, Tablo2$(), Tablo3, x&
    Dim Date_Deb, Date_Fin
    'définition des dates de début et fin de période en nombre ou en valeur
    Date_Deb = "01/01/2021": Date_Fin = "31/12/2022"
    Date_Deb = InputBox("Entrez une date de début en format jj/mm/aaaa ou en valeur", "Demande", Date_Deb)
    Date_Fin = InputBox("Entrez une date de fin en format jj/mm/aaaa ou en valeur", "Demande", Date_Fin)
    If (IsDate(Date_Deb) Or IsNumeric(Date_Deb)) And (IsDate(Date_Fin) Or IsNumeric(Date_Fin)) Then
        'récupération en tableaux
        Tablo = TJF(Date_Deb, Date_Fin)
        If Not Tablo(LBound(Tablo)) = "" Then
            Tablo3 = TJF(DateDeb:=Date_Deb, DateFin:=Date_Fin, Lib:=1)
            ReDim Tablo2(LBound(Tablo) To UBound(Tablo))
            For x = LBound(Tablo2) To UBound(Tablo2)
                Tablo2(x) = Format(Tablo(x), "dddd dd mmmm yyyy") & ", " & Tablo3(x)
            Next x
            MsgBox "Il y a " & UBound(Tablo2) - LBound(Tablo2) + 1 & " jours fériés sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy") & " : " & vbLf & vbLf & Join(Tablo2, vbLf), vbOKOnly + vbInformation
        Else
            MsgBox "Il y a aucun jour férié sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy"), vbOKOnly + vbInformation
        End If
    End If
End Sub
'pour récupérer un tableau vb des jours fériés avec leurs libellés, Suisse, Canton de Genève, jours chomés intégrés aux jours fériés
Sub demo4B()
    Dim Tablo, Tablo2$(), Tablo3, x&
    Dim Date_Deb, Date_Fin
    'définition des dates de début et fin de période en nombre ou en valeur
    Date_Deb = "01/01/2021": Date_Fin = "31/12/2022"
    Date_Deb = InputBox("Entrez une date de début en format jj/mm/aaaa ou en valeur", "Demande", Date_Deb)
    Date_Fin = InputBox("Entrez une date de fin en format jj/mm/aaaa ou en valeur", "Demande", Date_Fin)
    If (IsDate(Date_Deb) Or IsNumeric(Date_Deb)) And (IsDate(Date_Fin) Or IsNumeric(Date_Fin)) Then
        'récupération en tableaux
        Tablo = TJF(DateDeb:=Date_Deb, DateFin:=Date_Fin, Pays:=41, Region:="GE", Jour_Chome:=1)
        If Not Tablo(LBound(Tablo)) = "" Then
            Tablo3 = TJF(DateDeb:=Date_Deb, DateFin:=Date_Fin, Pays:=41, Region:="GE", Jour_Chome:=1, Lib:=1)
            ReDim Tablo2(LBound(Tablo) To UBound(Tablo))
            For x = LBound(Tablo2) To UBound(Tablo2)
                Tablo2(x) = Format(Tablo(x), "dddd dd mmmm yyyy") & ", " & Tablo3(x)
            Next x
            MsgBox "Il y a " & UBound(Tablo2) - LBound(Tablo2) + 1 & " jours fériés/chômés pour le Canton de Genève sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy") & " : " & vbLf & vbLf & Join(Tablo2, vbLf), vbOKOnly + vbInformation
        Else
            MsgBox "Il y a aucun jour férié/chômé pour le Canton de Genève sur la période du " & Format(Date_Deb, "dddd dd mmmm yyyy") & " au " & Format(Date_Fin, "dddd dd mmmm yyyy"), vbOKOnly + vbInformation
        End If
    End If
End Sub
 

Pièces jointes

  • Exemples utilisation en matricielles standard ou dynamiques 365 horizontales ou verticales.xlsm
    73.3 KB · Affichages: 3
  • Exemples utilisation TJF en formules en MFC en détermination de jours fériés.xlsm
    79.7 KB · Affichages: 0
Dernière édition:

Etoto

XLDnaute Accro
Bonjour le forum

Tableau automatisé des jours fériés, nouvelle version 2.0, intègre les jours fériés pour la Belgique, la Suisse et le Luxembourg.

Bien cordialement, @+
Bonjour,

Désolé de t'avoir bien compliqué la chose avec les 26 cantons suisses, mais merci énormément pour ton aide.

Cordialement
 

soan

XLDnaute Barbatruc
Bonjour,

Tableau automatisé des jours fériés, nouvelle version 2.0, intègre les jours fériés pour la Belgique, la Suisse et le Luxembourg.

Désolé de t'avoir bien compliqué la chose avec les 26 cantons suisses, mais merci énormément pour ton aide.

c'est pas grave : tous nos amis belges, suisses, et luxembourgeois (y compris Jacques Brel, Ursula Andress, et Stéphane Bern) seront positivement ravis que Yeahou a eu l'extrême gentillesse de s'occuper de leur cas particulier ! 👍 :)

soan​
 

Etoto

XLDnaute Accro
Re,
Bonjour,





c'est pas grave : tous nos amis belges, suisses, et luxembourgeois (y compris Jacques Brel, Ursula Andress, et Stéphane Bern) seront positivement ravis que Yeahou a eu l'extrême gentillesse de s'occuper de leur cas particulier ! 👍 :)

soan​
Oui et je connais certains membres suisses de ce forum qui vont aimé cette MAJ de la fonction (Dont moi) :).

Merci beaucoup Yeahou
 
Bonjour le fil, le forum

Voici une nouvelle version 3.0, mise à jour sur le post #1. [ édition : version 3.1 mise à jour sur post #1 ]
Cette version rend utilisable la fonction en fonction matricielle horizontale ou verticale, fonction compatible matricielles standard et matricielles dynamiques Excel 365. La gestion des #N/A en calcul matriciel standard est intégrée dans la fonction.
Cette nouvelle fonctionnalité permet de remplacer facilement, dans un fichier existant, un tableau vertical des jours fériés à mise à jour manuelle par un tableau des jours fériés entièrement automatisé.

Bien cordialement, @+
Animation.gif
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Bonjour Yeahou et bravo pour cette belle fonction.👍

Pour ma culture personnelle, ne pourait-on pas supprimer le premier calcul de Paques ?
VB:
Annee = Year(DateDeb)
    'détermine le dimanche de Paques sur DateDeb, simplification du calcul originel du dimanche de Pâques by patricktoulon
    Dim_Paques = CDate(((Round(DateSerial(Annee, 4, (234 - 11 * (Annee Mod 19)) Mod 30) / 7, 0) * 7) - 6))
Comme Annee est vérifiée à chaque boucle, le calcul se fera automatiquement dès la première vérification, sachant que sans calcul préalable Annee = 0

Tu pourrais, je pense, supprimer tous les "Case Else" ; à moins que je n'ai pas compris.

En tous cas Bravo ;)

Cordialement
 
Bonjour Efgé, le forum

Pour ma culture personnelle, ne pourait-on pas supprimer le premier calcul de Paques ?
Possible, j'avais intégré la boucle quand j'ai modifié la fonction pour couvrir plusieurs années, il faut que je vérifie mais comme la nouvelle version 3.3 est prête, j'intégrerai la modification au déploiement si elle ne gêne pas.
Tu pourrais, je pense, supprimer tous les "Case Else" ; à moins que je n'ai pas compris.
C'est une vieille habitude, j'intègre toujours un Case Else, même vide dans un Select Case, il ne gêne en rien. Il est vrai que cela réduirait un peu la taille de la fonction. Pareil, j'intègrerai la modification au déploiement de la nouvelle version.
Merci pour tes retours,

Bien cordialement, @+
 
Bonjour le fil, le forum

Voici une nouvelle version 3.4, mise à jour sur le post #1 , elle intègre en option la possibilité de renvoyer les libellés des jours fériés, les exemples du post 1 ont été modifiés pour intégrer cette nouvelle fonctionnalité.

Bien cordialement, @+

Animation.gif
 
Dernière édition:
Bonjour le fil, le forum

En reprenant la fonction pour la version 3.4, j'ai vu que certaines parties du code, la fonction ayant beaucoup évolué depuis la première version, pouvaient être améliorées. Voici une nouvelle version 3.8, mise à jour sur le post #1 , optimisation du code plus rapide, notamment sur un grand nombre d'années, et qui règle un problème de séparateur de dates par défaut.

Bien cordialement, @+
 

Statistiques des forums

Discussions
293 047
Messages
1 928 124
Membres
183 853
dernier inscrit
ali1987