Calcul du nombre de jours ouvrables entre deux dates

Contenu du snippet

mettre ces deux fonctions dans la page ou dans un Include et appeler la fonction nbjour...(datededebut,datedefin)

Source / Exemple :


function nbjourouvrable(datdeb,datfin)
if datdeb="" or datfin="" then exit function

nbjourtot = DateDiff("d",datdeb,datfin) + 1

for i=1 to nbjourtot

  if ferie(datdeb) then
    nbjourtot = nbjourtot - 1
  end if

 datdeb=DateAdd("d",1,datdeb)

next

nbjourouvrable=nbjourtot

End function

function ferie(Jour)
if jour="" then exit function
Dim JJ,AA
Dim NbOr, Epacte
Dim PLune, Paques, Ascension, Pentecote

JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour)

If JJ = 1 And mm = 1 Then ferie = True: Exit Function     '1 Janvier
If JJ = 1 And mm = 5 Then ferie = True: Exit Function     '1 Mai
If JJ = 8 And mm = 5 Then ferie = True: Exit Function     '8 Mai
If JJ = 14 And mm = 7 Then ferie = True: Exit Function   '14 Juillet
If JJ = 15 And mm = 8 Then ferie = True: Exit Function   '15 Août
If JJ = 1 And mm = 11 Then ferie = True: Exit Function   '1 Novembre
If JJ = 11 And mm = 11 Then ferie = True: Exit Function '11 Novembre
If JJ = 25 And mm = 12 Then ferie = True: Exit Function '25 Décembre

NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
PLune = CDate("19/04/" & AA) - ((Epacte + 6) Mod 30)
If Epacte = 24 Then PLune = PLune - 1
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1

Paques = PLune - Weekday(PLune) + vbMonday + 7  'Paques
If JJ = Day(Paques) And mm = Month(Paques) Then ferie=true : Exit Function

Ascension = Paques + 38 'Ascension
If JJ = Day(Ascension) And mm = Month(Ascension) Then ferie=true : Exit Function

Pentecote = Ascension + 11 'Pentecote
If JJ = Day(Pentecote) And mm = Month(Pentecote) Then ferie=true : Exit Function
ferie = False
Dim numjour
numjour=weekday(jour,vbmonday)   	'fixe à 6 et 7 la valeur du samedi & dimanche
if numjour=6 or numjour=7 then ferie=true : Exit function
End function

Conclusion :


Attention l'appel de la fonction nbjourouvrable faite appel a la fonction ferie qui elle peut etre appellée indépendamment pour savoir si un jour est férié

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.