OVH Cloud OVH Cloud

Jours travaillés en VBA

13 réponses
Avatar
Patrick Fredin
Bonjour,

Dans une feuille de calcul, il y a la fonction "NETWORKDAYS" (Jours ouvrés
entre 2 dates).
Je n'arrive pas à trouver cette fonction en VBA, même en utilisant
WorksheetFunction.

Avez-vous une idée ?

Merci d'avance.

--
Patrick

10 réponses

1 2
Avatar
LSteph
Bonsoir,
Perhaps WeekDays Isn't it?

Mais AV a fait un truc où il y a tout et qui doit s'trouver à Misangeville

lSteph

"Patrick Fredin" a écrit dans le message
de news:
Bonjour,

Dans une feuille de calcul, il y a la fonction "NETWORKDAYS" (Jours ouvrés
entre 2 dates).
Je n'arrive pas à trouver cette fonction en VBA, même en utilisant
WorksheetFunction.

Avez-vous une idée ?

Merci d'avance.

--
Patrick


Avatar
Domi
Salut,
personnelement j'utilise une applic dans laquelle il y a des tas de calculs
sur les dates ouvrées et le code utilise "networkdays" et "workday"
joursferies est une plages des jours feriés... on s'en serait douté un
peu...!

quelques lignes du code prises au pif...
DelDevReel.Value = networkdays(CDate(DateDifTech), DateReceptBELog,
Range("joursferies"))
DelEtudeCalc.Value = networkdays(datedifCommCalc, datedifCalcLog,
Range("joursferies"))
DatePrevDifBELog.Value Format(workday(CDate(LancementOF), -Val(DelAppros) - 1,
Range("joursferies")), "dd/mm/yy")
DatePrevDifBE.Value Format(workday(CDate(DatePrevDifBELog), -Val(DelaiConcept),
Range("joursferies")), "dd/mm/yy")
LctDeb = CDate(workday(CDate(DateDispoParc), -15, Range("joursferies")))

Et cela marche très bien, cela renvoie des dates ou des délais entre
dates...il faut eplucher un peu.
Si cela peut t'aider ;o)
Domi

"Patrick Fredin" a écrit dans le message
de news:
Bonjour,

Dans une feuille de calcul, il y a la fonction "NETWORKDAYS" (Jours ouvrés
entre 2 dates).
Je n'arrive pas à trouver cette fonction en VBA, même en utilisant
WorksheetFunction.

Avez-vous une idée ?

Merci d'avance.

--
Patrick


Avatar
AV
Fonction perso avec une date de début et une date de fin et sans plage des jours
fériés (ils sont calculés) :

Function NB_JOUR_OUVRES(Début, Fin)'AV
For i = Year(Début) To Year(Fin)
Tbl = Tbl & DateSerial(i, 1, 1) * 1 & "," 'Jour de l'An
P = Evaluate("round(date(" & i & ",4,mod(234-11*mod(" & i &
",19),30))/7,)*7-5") 'Lundi de Pâques
Tbl = Tbl & P & ","
Tbl = Tbl & DateSerial(i, 5, 1) * 1 & "," 'Fête du travail
Tbl = Tbl & DateSerial(i, 5, 8) * 1 & "," 'Victoire 1945
Tbl = Tbl & P + 38 & "," 'Jeudi de l'Ascension
'Tbl = Tbl & P + 49 & "," 'Lundi de Pentecôte
Tbl = Tbl & DateSerial(i, 7, 14) * 1 & "," 'Fête Nationale
Tbl = Tbl & DateSerial(i, 8, 15) * 1 & "," '15 Aôut
Tbl = Tbl & DateSerial(i, 11, 1) * 1 & "," ' Toussaint
Tbl = Tbl & DateSerial(i, 11, 11) * 1 & "," '11 Nov [Armistice 1918]
Tbl = Tbl & DateSerial(i, 12, 25) * 1 & "," ' Noël
Next
If Tbl = "" Then Exit Function
Y = "{" & Left(Tbl, Len(Tbl) - 1) & "}"
For j = Début * 1 To Fin * 1
If Weekday(j, 2) < 6 And Evaluate("isna(match(" & j & "," & Y & ",0))")
Then x = x + 1
Next
NB_JOUR_OUVRES = x
End Function

AV
Avatar
Jacky
Bonjour Alain

Intéressé par cette fonction, je n'arrive pas à la faire tourner.
Pourrais-tu m'indiquer les modifs à faire sous xl97
Salutations
JJ

"AV" a écrit dans le message de
news:%
Fonction perso avec une date de début et une date de fin et sans plage des
jours

fériés (ils sont calculés) :

Function NB_JOUR_OUVRES(Début, Fin)'AV
For i = Year(Début) To Year(Fin)
Tbl = Tbl & DateSerial(i, 1, 1) * 1 & "," 'Jour de l'An
P = Evaluate("round(date(" & i & ",4,mod(234-11*mod(" & i &
",19),30))/7,)*7-5") 'Lundi de Pâques
Tbl = Tbl & P & ","
Tbl = Tbl & DateSerial(i, 5, 1) * 1 & "," 'Fête du travail
Tbl = Tbl & DateSerial(i, 5, 8) * 1 & "," 'Victoire 1945
Tbl = Tbl & P + 38 & "," 'Jeudi de l'Ascension
'Tbl = Tbl & P + 49 & "," 'Lundi de Pentecôte
Tbl = Tbl & DateSerial(i, 7, 14) * 1 & "," 'Fête Nationale
Tbl = Tbl & DateSerial(i, 8, 15) * 1 & "," '15 Aôut
Tbl = Tbl & DateSerial(i, 11, 1) * 1 & "," ' Toussaint
Tbl = Tbl & DateSerial(i, 11, 11) * 1 & "," '11 Nov [Armistice 1918]
Tbl = Tbl & DateSerial(i, 12, 25) * 1 & "," ' Noël
Next
If Tbl = "" Then Exit Function
Y = "{" & Left(Tbl, Len(Tbl) - 1) & "}"
For j = Début * 1 To Fin * 1
If Weekday(j, 2) < 6 And Evaluate("isna(match(" & j & "," & Y &
",0))")

Then x = x + 1
Next
NB_JOUR_OUVRES = x
End Function

AV




Avatar
AV
Pourrais-tu m'indiquer les modifs à faire sous xl97


Je ne vois pas ce qui pourrait l'empécher de tourner sous 97
Exemple joint enregistré en XL97
http://cjoint.com/?kppco1On7o

AV

Avatar
Jacky
Re....
Je ne vois pas ce qui pourrait l'empécher de tourner sous 97


Parce que moi, b... comme je suis, je n'obstinais à entrer les dates sous la
forme jj/mm/aaaa.

J'ai une autre question, si j'ose,
allez, j'ose....
Dans la régions Alsace nous "bénéficions" (encore pour le moment) de 2 jours
fériés supplémentaires,
soit le:
Vendredi saint (Paques-2)
et
Saint Etienne (Noel+1)
Pourrait on imaginer que la boite de dialogue de la fonction en prenne
compte ??
Par exemple Alsace/Moselle =oui/non
et que la fonction en tienne compte dans ces calculs.

@+
JJ

Avatar
AV
Parce que moi, b... comme je suis, je n'obstinais à entrer les dates sous la
forme jj/mm/aaaa.


??... heu... le format ne devrait avoir aucune incidence sur le calcul...

Exemple "à la sauce locale" là :
http://cjoint.com/?kps3vYLF18

Pfff.... pas normal ça !
AV

Avatar
Jacky
Re....
??... heu... le format ne devrait avoir aucune incidence
Je rentrais les dates"jj/mm/aa" dans la boite de dialogue de la fonction ,

pas dans une cellule et la , cela ne fonctionne pas.

Mes vives remerciements pour l'adaptation régionale........ contre laquelle
tu élèves publiquement
*Jaloux *
Ne le crie pas trop fort, si cela arrive aux oreilles du ministre du moment,
il sera chiche de nous le sucrer.
;o))
Bonne soirée
JJ

"AV" a écrit dans le message de news:

Parce que moi, b... comme je suis, je n'obstinais à entrer les dates sous
la
forme jj/mm/aaaa.


??... heu... le format ne devrait avoir aucune incidence sur le calcul...
de la fonction , pas dans une cellule.


Exemple "à la sauce locale" là :
http://cjoint.com/?kps3vYLF18

Pfff.... pas normal ça !
AV





Avatar
AV
Je rentrais les dates"jj/mm/aa" dans la boite de dialogue de la fonction ,
pas dans une cellule et la , cela ne fonctionne pas.


Ok..je comprends
Une rustine : Tu peux rentrer tes valeurs directement comme ça :
=NB_JOUR_OUVRES("1/1/05"*1;"31/12/05"*1;VRAI)
ou plus "international" :
=NB_JOUR_OUVRES(DATE(2005;1;1);DATE(2005;12;31);VRAI)

AV

Avatar
Jacky
Ok! Merci
Je vais essayer de bidouiller cela dans la fonction.

JJ

"AV" a écrit dans le message de news:

Je rentrais les dates"jj/mm/aa" dans la boite de dialogue de la fonction
,
pas dans une cellule et la , cela ne fonctionne pas.


Ok..je comprends
Une rustine : Tu peux rentrer tes valeurs directement comme ça :
=NB_JOUR_OUVRES("1/1/05"*1;"31/12/05"*1;VRAI)
ou plus "international" :
=NB_JOUR_OUVRES(DATE(2005;1;1);DATE(2005;12;31);VRAI)

AV





1 2