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

DATE + jours ouvrés

9 réponses
Avatar
big
Bonjour,
comment je peux faire additionner une date à un nmbre de jours ouvrés et
obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
Par exemple :
jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.

D'avance merci.

9 réponses

Avatar
Caetera
"big" a écrit dans le message de news:

Bonjour,
comment je peux faire additionner une date à un nmbre de jours ouvrés et
obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
Par exemple :
jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.




******************

Avec une plage nommée pour les jours fériés et l'utilitaire d'analyse (pas
super conseillé)

=SERIE.JOUR.OUVRE(A1;2;joursFériés)

Avec une matricielle :
=PETITE.VALEUR(SI((JOURSEM(A1+LIGNE(INDIRECT("1:1000"));2)<6)*(ESTNA((EQUIV(A1+LIGNE(INDIRECT("1:1000"));joursFériés;0))));A1+LIGNE(INDIRECT("1:1000")));2)

Etc
Avatar
Daniel.C
Bonjour.
=SERIE.JOUR.OUVRE(A1;2)
avec 1/10/2009 en A1.
Si tu utilises une version antérieure à XL2007, tu dois avoir installé
la macro complémentaire "Utilitaire d'analyse".
Cordialement.
Daniel

Bonjour,
comment je peux faire additionner une date à un nmbre de jours ouvrés et
obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
Par exemple :
jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.

D'avance merci.


Avatar
Jacky
Bonsoir ,

Date en A1
Nb de jours à additionnés en B1
Les dates fériées nommées "feriés"
Adapter de AV

=PETITE.VALEUR(SI((JOURSEM(A2+LIGNE(INDIRECT("1:1000"));2)<6)*(ESTNA((EQUIV(A2+LIGNE(INDIRECT("1:1000"));feriés;0))));A2+LIGNE(INDIRECT("1:1000")));$B$2)

Matricielle. Valider par ctrl+maj+entrée
A saisir sur une seule ligne
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj200910/cij5RoVTmK.xls
--
Salutations
JJ


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

Bonjour,
comment je peux faire additionner une date à un nmbre de jours ouvrés et
obtenir une date en tenant compte des WE et des jours fériés
intermédiaires ?
Par exemple :
jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.

D'avance merci.


Avatar
FS
Bonsoir,

Une fonction perso s'appuyant sur l'inusable fonction TYPEJOUR de
Laurent Longre qui calcule entre autres les jours fériés :

'================ Function AjouterJoursW(D As Date, Jours As Long)
Dim i As Long, Dt As Date
Dt = D
For i = 1 To Jours
Dt = Dt + 1
If TYPEJOUR(Dt) <> 0 Then i = i - 1
Next
AjouterJoursW = Dt
End Function

Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function
'================
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

big a écrit :
Bonjour,
comment je peux faire additionner une date à un nmbre de jours ouvrés et
obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
Par exemple :
jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.

D'avance merci.


Avatar
FS
Re,

Et s'il peut t'arriver de remonter le temps, préfère cette version qui
accepte en 2ème paramètre un nombre positif ou négatif :

'============== Function AjouterJoursW(D As Date, Jours As Long)
Dim i As Long, Dt As Date
Dt = D
For i = 1 To Abs(Jours)
Dt = IIf(Jours < 0, Dt - 1, Dt + 1)
If TYPEJOUR(Dt) <> 0 Then i = i - 1
Next
AjouterJoursW = Dt
End Function

Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function
'==============
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

big a écrit :
Bonjour,
comment je peux faire additionner une date à un nmbre de jours ouvrés et
obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
Par exemple :
jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.

D'avance merci.


Avatar
big
Bonjour FS,
merci pour ta réponse. Mais comment coller ta fonction dans visual basic et
faire appel à celle-ci dans feuil EXCEL.
Je l'ai collé dans un macro mais apparemment le macro n'accept que SUB et
non pas de fonction.
D'avance merci.

"FS" a écrit :

Bonsoir,

Une fonction perso s'appuyant sur l'inusable fonction TYPEJOUR de
Laurent Longre qui calcule entre autres les jours fériés :

'================ > Function AjouterJoursW(D As Date, Jours As Long)
Dim i As Long, Dt As Date
Dt = D
For i = 1 To Jours
Dt = Dt + 1
If TYPEJOUR(Dt) <> 0 Then i = i - 1
Next
AjouterJoursW = Dt
End Function

Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function
'================ >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

big a écrit :
> Bonjour,
> comment je peux faire additionner une date à un nmbre de jours ouvrés et
> obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
> Par exemple :
> jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.
>
> D'avance merci.



Avatar
big
Bonjour Jacky,
merci pour le fichier. Quand je saisi dans A3 la date et dans B3 le nombre
de jours comment je fais pour obtenir le résultat dans D3 ?
D'avance merci.

"Jacky" a écrit :

Bonsoir ,

Date en A1
Nb de jours à additionnés en B1
Les dates fériées nommées "feriés"
Adapter de AV

=PETITE.VALEUR(SI((JOURSEM(A2+LIGNE(INDIRECT("1:1000"));2)<6)*(ESTNA((EQUIV(A2+LIGNE(INDIRECT("1:1000"));feriés;0))));A2+LIGNE(INDIRECT("1:1000")));$B$2)

Matricielle. Valider par ctrl+maj+entrée
A saisir sur une seule ligne
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj200910/cij5RoVTmK.xls
--
Salutations
JJ


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

> Bonjour,
> comment je peux faire additionner une date à un nmbre de jours ouvrés et
> obtenir une date en tenant compte des WE et des jours fériés
> intermédiaires ?
> Par exemple :
> jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.
>
> D'avance merci.






Avatar
big
Grand merci à tous.
Surtout à Jacky. J'ai retenu sa solution (son fichier).
Cordialement.
"FS" a écrit :

Re,

Et s'il peut t'arriver de remonter le temps, préfère cette version qui
accepte en 2ème paramètre un nombre positif ou négatif :

'============== > Function AjouterJoursW(D As Date, Jours As Long)
Dim i As Long, Dt As Date
Dt = D
For i = 1 To Abs(Jours)
Dt = IIf(Jours < 0, Dt - 1, Dt + 1)
If TYPEJOUR(Dt) <> 0 Then i = i - 1
Next
AjouterJoursW = Dt
End Function

Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Samedi ou dimanche
If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
End Select

End Function
'============== >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

big a écrit :
> Bonjour,
> comment je peux faire additionner une date à un nmbre de jours ouvrés et
> obtenir une date en tenant compte des WE et des jours fériés intermédiaires ?
> Par exemple :
> jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.
>
> D'avance merci.



Avatar
Jacky
Re
...comment je fais pour obtenir le résultat dans D3 ?


Enlève le "$" devant le "2" de $B$2 et recopie (Tirer) la formule vers le
bas

=PETITE.VALEUR(SI((JOURSEM(A2+LIGNE(INDIRECT("1:1000"));2)<6)*(ESTNA((EQUIV(A2+LIGNE(INDIRECT("1:1000"));feriés;0))));A2+LIGNE(INDIRECT("1:1000")));$B2)

Un exemple avec également les fonctions de LL/FS
que tu dois mettre dans un module standard et non pas à l'intérieur d'une
macro.
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj200910/cijgFBMQTx.xls

--
Salutations
JJ


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

Bonjour Jacky,
merci pour le fichier. Quand je saisi dans A3 la date et dans B3 le nombre
de jours comment je fais pour obtenir le résultat dans D3 ?
D'avance merci.

"Jacky" a écrit :

Bonsoir ,

Date en A1
Nb de jours à additionnés en B1
Les dates fériées nommées "feriés"
Adapter de AV

=PETITE.VALEUR(SI((JOURSEM(A2+LIGNE(INDIRECT("1:1000"));2)<6)*(ESTNA((EQUIV(A2+LIGNE(INDIRECT("1:1000"));feriés;0))));A2+LIGNE(INDIRECT("1:1000")));$B$2)

Matricielle. Valider par ctrl+maj+entrée
A saisir sur une seule ligne
Voir ici
http://www.cijoint.fr/cjlink.php?file=cj200910/cij5RoVTmK.xls
--
Salutations
JJ


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

> Bonjour,
> comment je peux faire additionner une date à un nmbre de jours ouvrés
> et
> obtenir une date en tenant compte des WE et des jours fériés
> intermédiaires ?
> Par exemple :
> jeudi 1 octobre +2 jours ouvrés (Ven et Lun)=Lundi 5 Octobre.
>
> D'avance merci.