Calcul du nombre de jours ouvrables entre deux dates

Soyez le premier à donner votre avis sur cette source.

Snippet vu 53 549 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

Messages postés
2
Date d'inscription
mardi 25 mai 2010
Statut
Membre
Dernière intervention
26 mai 2010

Impec, merci beaucoup
Messages postés
4
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
22 juillet 2004

Pour avoir le nombre de jour férié entre deux dates il suffit de faire le contraire de nbjourouvrable.
du genre :
function nbjourferie(datdeb,datfin)
if datdeb="" or datfin="" then exit function
nbjourferie=0
nbjourtot = DateDiff("d",datdeb,datfin) + 1

for i=1 to nbjourtot

if ferie(datdeb) then
nbjourferie= nbjourferie + 1
endif

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

next



End function
Messages postés
2
Date d'inscription
mardi 25 mai 2010
Statut
Membre
Dernière intervention
26 mai 2010

Bonsoir
Tout d'abord merci pour ce code ma foi fort utile pour comptabiliser les journées travaillées. J'ai essayé de l'adapter pour qu'il fonctionne quand le samedi ou le dimanche sont travaillés. Ca fonctionne très bien, cependant je n'arrive pas à afficher le nombre de jour férié de chaque mois. Quelle variable utiliser ?
Merci de votre aide.
Slymalen
Messages postés
4
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
22 juillet 2004

de ce que je me souviens du fonctionnement dans acces .
tu colles les deux fonction dans ton code et tu appelles la fonction principale :
nbjours=nbjourouvrable(datedebut ,datefin)
en ayant défini ta variable nbjours au préalable et normalement c'est bon.
Messages postés
64
Date d'inscription
lundi 4 décembre 2000
Statut
Membre
Dernière intervention
27 janvier 2017

Bonjour : merci a tous ceux qui pourrons m'aider !!

j'aimerais me servir de ce code source dans access 2003 !

j'ai crer une table : datedebut et datefin

ensuite créer un formulaire : et la j'aimerais afficher le nb de jour écouler !

je suis perdu dans la façon de maitre en place ce code source !!

Débutant dans les codes sources !

si ont peut m'expliquer par étape ! ça serais cool ou un exemple !

Merci beaucoup de votre Aide !!!!!

teck
Afficher les 14 commentaires

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.