OVH Cloud OVH Cloud

jours ouvrés

2 réponses
Avatar
Gerard
bonjours
comment calculer le nombre de jours ouvrés en VBA?
j'ai la formule avec excel mais je n'arrive pas a trouver l'equivalent en
vba.....
merci

2 réponses

Avatar
michdenis
Bonjour Gérard,

Une proposition de Frédéric Sigonneau parue sur ce Forum :

À toi de définir la liste de congés fériés de la procédure
qui s'appliquent à ton cas.

P.S. Dans la liste des congés fériés : An est une variable à ne pas
substituer pour une valeur particulière.

'-------------------------------------------------
Function PlusJOuvres(D, NbJours)
Dim Dt, i
Dim NbOr, Epacte As Integer
Dim PLune, LPaques, Arr(10) As Long

Dt = CLng(D)
Do
Dt = Dt + 1
'calcul du Lundi de Pâques
NbOr = (An Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int(2 + Int(An / 100)) * 3 / 7)) Mod 30
PLune = DateSerial(An, 4, 19) - ((Epacte + 6) Mod 30)
If Epacte = 24 Then PLune = PLune - 1
If Epacte = 25 And (An >= 1900 And An < 2200) Then PLune = PLune - 1
LPaques = PLune - Weekday(PLune) + vbMonday + 7 'Lundi Paques

'tableau des fériés
Arr(0) = DateSerial(An, 1, 1)
Arr(1) = LPaques
Arr(2) = LPaques + 38 'Ascencion
Arr(3) = LPaques + 49 'Pentecôte
Arr(4) = DateSerial(An, 5, 1)
Arr(5) = DateSerial(An, 5, 8)
Arr(6) = DateSerial(An, 7, 14)
Arr(7) = DateSerial(An, 8, 15)
Arr(8) = DateSerial(An, 11, 1)
Arr(9) = DateSerial(An, 11, 11)
Arr(10) = DateSerial(An, 12, 25)

'ajoute si ouvré
If (IsError(Application.Match(Dt, Arr, 0))) = True And _
(Weekday(Dt, vbMonday) < 6) = True Then
i = i + 1
End If
Loop Until i = NbJours

PlusJOuvres = Dt

End Function

A utiliser ensuite dans une feuille de calcul :
=PlusJOuvres(A1;10)
(ajoute 10 jours ouvrés à une date en A1)

'-------------------------------------------------


Salutations!




"Gerard" a écrit dans le message de news: 43d36896$0$18350$
bonjours
comment calculer le nombre de jours ouvrés en VBA?
j'ai la formule avec excel mais je n'arrive pas a trouver l'equivalent en
vba.....
merci
Avatar
JB
Bonjour,

http://cjoint.com/?bwruh83r0l

'Férié' est un champ qui contient la liste des jours fériés:

Sub essai()
temp = "NB.JOURS.OUVRES(""" & [F2] & """,""" & [G2] & """,férié)"
n = Evaluate(temp)
msgbox n
End Sub

Cordialement JB