Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
'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)
"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
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
'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)
"Gerard" <gege@microsoft.fr> a écrit dans le message de news: 43d36896$0$18350$8fcfb975@news.wanadoo.fr...
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
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
'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)
"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
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
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