OVH Cloud OVH Cloud

Fonction PLUSJOUR OUVRES

8 réponses
Avatar
Pascal
Bonjour,
Quelqu'un peut m'aider sur le Fonction PLUSJOURSOUVRES.
J'ai un planning avec un date de depart en A1.
En B1 j'ai =PlusJOuvres($A$1;1),
donc normalement si le jour qui suit A1 est férié je devrais pas exemple en
a1=31/12/03 et en B1 02/01/2004 hors en B1 j'ai 01/01/2004????

Merci
iPascal

8 réponses

Avatar
AV
PLUSJOURSOUVRES


Elle vient d'où cette fonction ?

AV

Avatar
Pascal
J'ai trouvé cela chez je crois chez F. SIGONNEAU je sais plus tu la veux en
copie???

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) '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 'fs


"AV" a écrit dans le message de news:
bo01ch$u4j$
PLUSJOURSOUVRES


Elle vient d'où cette fonction ?

AV





Avatar
AV
Je laisserais FS te répondre sur sa fonction perso mais il existe aussi la
fonction (issue de l'utilitaire d'analyse) SERIE.JOUR.OUVRE

AV
Avatar
Alain CROS
Bonjour.

Rajoute An = Year(Dt)
aprés Dt = Dt + 1

Alain CROS.

"Pascal" a écrit dans le message de news: #
J'ai trouvé cela chez je crois chez F. SIGONNEAU je sais plus tu la veux en
copie???

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) '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 'fs


Avatar
Frédéric Sigonneau
Bonsoir,

Merci du suivi :)
Quand je pense au boulot de mise à jour qui m'attend si le lundi de Pentecôte
passe à la trappe un de ces jours :-((

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour.

Rajoute An = Year(Dt)
aprés Dt = Dt + 1

Alain CROS.

"Pascal" a écrit dans le message de news: #
J'ai trouvé cela chez je crois chez F. SIGONNEAU je sais plus tu la veux en
copie???

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) '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 'fs




Avatar
gee-dee-
bonsoir,
en complément d'informations :
la fonction de FS PlusJOuvres apporte un petit plus par rapport à la
fonction (issue de l'utilitaire d'analyse) SERIE.JOUR.OUVRE

exemple :
dimanche 28 décembre 2003 avec + 5 jours
SERIE.JOUR.OUVRE (D;5) vendredi 2 janvier 2004
PlusJOuvres(D; 5) lundi 5 janvier 2004

- SERIE.JOUR.OUVRE ne considère que les samedis et dimanches non ouvrés
- SERIE.JOUR.OUVRE admet une liste personnalisée de jours non travaillés
(ex: congés)

- la fonction PlusJOuvres inclus les féries légaux français

;-)))
du travail en perspective, comme Frédéric l'a dit : si le lundi de Pentecote
passe à la trappe,
il en profitera peut etre pour inclure la liste personnalisée de jours non
travaillés !!!!
PlusJOuvres(date_début;nb_jours;jours_fériés)

et pourquoi pas UTOPIE ????
les fériés par pays (il me semble que Daniel M. à déja travaillé le sujet
????)
PlusJOuvres(date_début;nb_jours;jours_fériés;pays)

@+
Avatar
AV
- SERIE.JOUR.OUVRE ne considère que les samedis et dimanches non ouvrés


Et si tu te servais du 3° argument de la fonction ça le ferait pas mieux ?

;-)
AV

Avatar
Modeste
;-)))
d'autant que le lundi de Pentecôte,
ta fonction s'en bat l'aile (locution azerguii ???)
;-)))
@+
-----Message d'origine-----
Bonsoir,

Merci du suivi :)
Quand je pense au boulot de mise à jour qui m'attend si
le lundi de Pentecôte

passe à la trappe un de ces jours :-((

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour.

Rajoute An = Year(Dt)
aprés Dt = Dt + 1

Alain CROS.

"Pascal" a écrit dans le message de
news: #


J'ai trouvé cela chez je crois chez F. SIGONNEAU je
sais plus tu la veux en



copie???

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) '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 'fs



.