Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Networkdays

6 réponses
Avatar
Denys
Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys

6 réponses

Avatar
michdenis
Bonjour Denis,

Tu dois ajouter à ton classeur la macro complémentaires "Utilitaire d'analyse " dans menu / outils / macros complémentaires /


Salutations!


"Denys" a écrit dans le message de news:
Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys
Avatar
michdenis
Bonjour Denys,

cette réponse est plus appropriée : ¡+NETWORKDAYS(A1;(A1) + 10;feries)


Salutations!


"Denys" a écrit dans le message de news:
Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys
Avatar
Denys
Bonjour Denis,

Merci beaucoup pour ta réponse. Cependant, le résultat obtenu est le 14
décembre au lieu du 19...en prenant en considération que la date en A1 est
celle d'aujourd'hui...

J'ai vérifié mes jours fériés, et tout semble OK de ce côté-là...

Denys


Bonjour Denys,

cette réponse est plus appropriée : ¡+NETWORKDAYS(A1;(A1) + 10;feries)


Salutations!


"Denys" a écrit dans le message de news:
Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys







Avatar
michdenis
Bonjour Denys,

J'ai lu un peu vite ;-)

Dans ta feuille de calcul, tu entres : =PlusJOuvres1(A1;10)

Tu peux copier cette fonction (publiée par Frédéric Sigonneau sur ce forum) dans
un module standard :

Dans la fonction, écris tes congés fériés en lieu et place de ceux présentés ici.
Tu peux même en ajouter ! ;-)

OU tu utilises l'autre version (2) de la fonction si tu veux faire référence déjà au "Nom" que
tu as définis dans ta feuille. Si tu utilises la deuxième version de la fonction,
attention, si tes dates fériées sont déclarées en dur, l'an prochain, les dates de tes
congés fériées ne seront plus bonnes ... l'année va s'être incrémentée de 1 et la
fonction n'en tiendra plus compte...à moins de lister tous les congés fériés pour
l'ensemble des années auquelles tu fais référence. à toi de voir ! La fonction 1 n'a pas
besoin de cela. Si tu utilises la fonction 1, dans ces lignes de code :
Arr(7) = DateSerial(An, 8, 15) , ne modifie pas "An", il s'incrémente tout seul !



'---------------------------------------
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
An = Year(Dt)
'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) 'Fête du travail
Arr(5) = DateSerial(An, 5, 8) ' Victoire 45
Arr(6) = DateSerial(An, 7, 14) 'Fête Nationale
Arr(7) = DateSerial(An, 8, 15)
Arr(8) = DateSerial(An, 11, 1) 'Toussaint
Arr(9) = DateSerial(An, 11, 11) 'Victoire 1914
Arr(10) = DateSerial(An, 12, 25) 'Noel
'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
'---------------------------------------


Assure toi que la plage nommé range("feries") dans la fonction
à le même nom que ta plage nommé dans ta feuille de calcul.
'---------------------------------------
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
An = Year(Dt)

If (IsError(Application.Match(Dt, Range("feries"), 0))) = True And _
(Weekday(Dt, vbMonday) < 6) = True Then
i = i + 1
End If
Loop Until i = NbJours
PlusJOuvres1 = Dt
End Function
'---------------------------------------





"Denys" a écrit dans le message de news:
Bonjour Denis,

Merci beaucoup pour ta réponse. Cependant, le résultat obtenu est le 14
décembre au lieu du 19...en prenant en considération que la date en A1 est
celle d'aujourd'hui...

J'ai vérifié mes jours fériés, et tout semble OK de ce côté-là...

Denys


Bonjour Denys,

cette réponse est plus appropriée : ¡+NETWORKDAYS(A1;(A1) + 10;feries)


Salutations!


"Denys" a écrit dans le message de news:
Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys







Avatar
Jacquouille
Bonjour Denis
Vu que le Monsieur, il dit que ça ne va pas, je me suis penché sur le
problème.
¡+NETWORKDAYS(A1;(A1) + 10;feries)
Pour moi, il est normal d'obtenir 14 car Netwmachin.... veut dire qu'il
calcule le nb de jours ouvrés qu'il y a entre a1 et a1+10......soit 9.....ce
qui est juste.
9+5 (aujourd'hui) = 14.
Jours Ouvrés a besoin (amha) de la borne départ et de celle de fin. Or,
c'est celle-là que l'on veut calculer. Espèce de réf circulaire????
Bonne chance et au plaisir de vous lire.

--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"michdenis" a écrit dans le message de news:
ehjIGYb%
Bonjour Denys,

cette réponse est plus appropriée : ¡+NETWORKDAYS(A1;(A1) + 10;feries)


Salutations!


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

Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys






Avatar
Denys
Salut Denis,

Fiou !!! Pas mal plus compliqué que je pensais.... Je m'attaque à la
première solution... Ça va prendre un petit peu plus de temps, mais je
l'aurai pour tout le temps.....

Merci beaucoup pour ton temps...

Denys


Bonjour Denys,

J'ai lu un peu vite ;-)

Dans ta feuille de calcul, tu entres : =PlusJOuvres1(A1;10)

Tu peux copier cette fonction (publiée par Frédéric Sigonneau sur ce forum) dans
un module standard :

Dans la fonction, écris tes congés fériés en lieu et place de ceux présentés ici.
Tu peux même en ajouter ! ;-)

OU tu utilises l'autre version (2) de la fonction si tu veux faire référence déjà au "Nom" que
tu as définis dans ta feuille. Si tu utilises la deuxième version de la fonction,
attention, si tes dates fériées sont déclarées en dur, l'an prochain, les dates de tes
congés fériées ne seront plus bonnes ... l'année va s'être incrémentée de 1 et la
fonction n'en tiendra plus compte...à moins de lister tous les congés fériés pour
l'ensemble des années auquelles tu fais référence. à toi de voir ! La fonction 1 n'a pas
besoin de cela. Si tu utilises la fonction 1, dans ces lignes de code :
Arr(7) = DateSerial(An, 8, 15) , ne modifie pas "An", il s'incrémente tout seul !



'---------------------------------------
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
An = Year(Dt)
'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) 'Fête du travail
Arr(5) = DateSerial(An, 5, 8) ' Victoire 45
Arr(6) = DateSerial(An, 7, 14) 'Fête Nationale
Arr(7) = DateSerial(An, 8, 15)
Arr(8) = DateSerial(An, 11, 1) 'Toussaint
Arr(9) = DateSerial(An, 11, 11) 'Victoire 1914
Arr(10) = DateSerial(An, 12, 25) 'Noel
'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
'---------------------------------------


Assure toi que la plage nommé range("feries") dans la fonction
à le même nom que ta plage nommé dans ta feuille de calcul.
'---------------------------------------
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
An = Year(Dt)

If (IsError(Application.Match(Dt, Range("feries"), 0))) = True And _
(Weekday(Dt, vbMonday) < 6) = True Then
i = i + 1
End If
Loop Until i = NbJours
PlusJOuvres1 = Dt
End Function
'---------------------------------------





"Denys" a écrit dans le message de news:
Bonjour Denis,

Merci beaucoup pour ta réponse. Cependant, le résultat obtenu est le 14
décembre au lieu du 19...en prenant en considération que la date en A1 est
celle d'aujourd'hui...

J'ai vérifié mes jours fériés, et tout semble OK de ce côté-là...

Denys


Bonjour Denys,

cette réponse est plus appropriée : ¡+NETWORKDAYS(A1;(A1) + 10;feries)


Salutations!


"Denys" a écrit dans le message de news:
Bonjour à tous,

Petit problème à vous soumettre.

Si en cellule A1 se trouve la date d'aujourd'hui, comment en cellule B1
avoir la date du dixième jour ouvrable suivant en tenant compte des jours
fériés ?

Voici ce que j'ai essayé à date...
=NETWORKDAYS(A1,(A1) + 10,feries)
=NETWORKDAYS(A1,(A1),feries)+10

Sans résultat.... J'ai une plage (feries) ou sont écrits tous les jours
fériés au Québec....

Merci pour votre aide

Denys