Calul de la date de fin à partir d'une durée - enlève les week-ends

Contenu du snippet

Cette fonction calcule la date de fin à partir d'une date de début et d'une durée. Pas compliqué. Mais là où ça se corse c'est qu'il faut enlever les week-ends.
Cette fonction utilise la récursivité.

Source / Exemple :


<%
'//---------------------------------------------------------------------------
'//                  CALCULE la date de fin et Enlève les jours des week-ends
'//---------------------------------------------------------------------------
dim cpte
Function CalculDateFin(DateD, duree)
        
    Dim NbJourWE
    Dim DateC, DateFin

   '//Cas de la durée non entière : ex. 2,5 jours	
   If (CStr(duree) > CStr(Int(duree))) Then
        duree = duree + 1
   End If    

    DateC = DateD
    DateFin = DateAdd("d", Int(duree), DateC)
    If (cpte = 0) Then
        DateFin = DateAdd("d", duree - 1, DateC)
    Else
        If (DatePart("w", DateC) = 1 Or DatePart("w", DateC) = 7) Then
            DateC = DateAdd("d", 1, DateC)
        End If
    End If
    
    cpte = cpte + 1
    While (CDate(DateC) <= DateFin)
           
        If (DatePart("w", DateC) = 1 Or DatePart("w", DateC) = 7) Then
            NbJourWE = NbJourWE + 1
        End If
        DateC = DateAdd("d", 1, DateC)
       

    Wend
    If (NbJourWE > 0) Then
        DateFin = CalculDateFin(DateFin, NbJourWE)
        NbJourWE = 0
    End If
    cpte = 0
    CalculDateFin = DateFin
    
         
End Function
%>

Conclusion :


J'espère que cette fonction sera utile à quelqu'un.
J'ai la même fonction en C++ et une autre plus simple qui calcule la durée entre 2 dates sans compter les week-ends
A bientôt
Tatal

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.