Calcul du nombre de jours ouvrables entre deux dates

Soyez le premier à donner votre avis sur cette source.

Snippet vu 53 357 fois - Téléchargée 35 fois

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

Ajouter un commentaire

Commentaires

Fait-il peut-être préciser le format de datedeb et datefin à donner.
bien évidemment puisque ce n'est pas précisé le format est standard en francais: JJ/MM/AAAA.
J'espère que ca éclaircit les choses !
cs_Spaceduck
Messages postés
4
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
1 décembre 2005
-
est-ce que ton code gère les années bissextiles ?
lespauloctantis
Messages postés
9
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
31 août 2003
-
il fonctionne pas ton code.....
lespauloctantis
Messages postés
9
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
31 août 2003
-
Nombre d'arguments ou affectation de propriété incorrects: 'nbjourouvrable'

comprends d'ou ça vient.....

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.