Calcul Nombre de jours ouvrés entre deux dates

Bonjour ,

Est ce qu'il y a une fonction L4G qui permet de calculer le nombre de jours ouvrés mais en tenant compte des jours fériés et les week-ends.

Merci d'avance.

  • Bonjour, 

    Quelle version d'X3 ?

  • in reply to Piotr.n

    c'est la version 11

  • in reply to Katrou Mohamed

    Bonjour, 

    Vous pouvez essayer cette fonction (faite pour la V6, mais elle doit fonctionner en V11) : 

    #**
    #* Fonction qui calcule le délai entre 2 dates en jours ouvrés
    #* Jours semaine = tableau de dimension 7 (1=Non ou 2=Oui)
    #*
    #* @param ZDATE1 : Date début
    #* @param ZDATE2 : Date fin
    #* @param ZJRSEM : Jours semaine (tab dim 7)
    #* @param ZINDISP : Code indisponibilité (facultatif)
    #*!
    Funprog CALCUL_DELAI_INDISP(ZDATE1,ZDATE2,ZJRSEM,ZINDISP)
        Value Date ZDATE1,ZDATE2
        Value Shortint ZJRSEM()
        Value Char ZINDISP
        Local Date ZDATE
        Local Shortint I,ZOK
        Local Integer ZRETOUR
        ZDATE = ZDATE1
        If ZINDISP<>""
            Local File TABUNAVAIL [F:TUV]
            Read [F:TUV]UVY0=ZINDISP
            If fstat : ZINDISP="" : Endif
        Endif
        While ZDATE<ZDATE2
            # Contrôle si jour d'indisponibilité (férié)
            ZOK = 2
            If ZINDISP<>""
                For I=0 To 24
                    If ZDATE>=[F:TUV]UVYSTRDAT(I) and ZDATE<=[F:TUV]UVYENDDAT(I)
                        ZOK = 1
                        Break
                    Endif
                Next
            Endif
            If ZOK=2 and ZJRSEM(dayn(ZDATE)-1)=2
                ZRETOUR += 1
            Endif
            ZDATE += 1
        Wend
        If ZINDISP<>""
            Close Local File [F:TUV]
        Endif
    End ZRETOUR

    Les jours ouvrées sont indiques dans le paramètre 3 via un tableau de 7 dimensions (2,2,2,2,2,1,1) pour indiquer que les jours ouvrés c'est du lundi au vendredi.

    Dans le paramètre 4 indiquer le code de période d'indisponibilité qui contient la liste des jours fériés

    Données de base
    >
    Tables tiers
    > Périodes d'indisponibilité

    Cdlt, 

    Piotr

  • in reply to Piotr.n

    Merci Beaucoup Piotr pour votre réponse ,

    Je n'arrive pas à tester l'appel de ce funprog , je ne sais pas comment passer le tableau à 7 dimensions.

    Exemple de mon test : 

    func CALCUL_DELAI_INDISP([07/04/2020],[08/04/2020],'(2,2,2,2,2,1,1)','AAA')

    Pourriez vous m'aider à utiliser la bonne syntaxe?

    Merci d'avance 

    Mohamed,

  • in reply to Katrou Mohamed

    Il faut déclarer la variable tableau

    Local Date ZD1,ZD2
    Local Shortint ZJO(7)
    ZJO(0)=2:ZJO(1)=2:ZJO(2)=2:ZJO(3)=2:ZJO(4)=2:ZJO(5)=1:ZJO(6)=1
    ZD1=[07/04/2020]
    ZD2=[08/04/2020]
    Infbox num$(func CALCUL_DELAI_INDISP(ZD1,ZD2,ZJO,"FERIE"))
    End

  • in reply to Piotr.n

    Merci beaucoup Piotr , ça marche

    Merci :)

  • in reply to Piotr.n

    Merci pour ce partage. Thierry