OVH Cloud OVH Cloud

jours ouvrés, dates

3 réponses
Avatar
Karine
Bonjour,=20

Je souhaite dans une colonne, =E0 partir d'une premi=E8re=20
date en A1, qu'en B1 s'affiche par exemple une date tel=20
que A1 + 1 semaine, et que C1=3D B1 + 2 semaines, D1 =3D C1 +=20
10 jours, etc.=20
Ceci en ne comptabilisant que les jours ouvr=E9s...=20

merci de votre aide

3 réponses

Avatar
FxM
Bonsoir Karine,

as-tu essayé =serie.jour.ouvres(date;jour;fériés) ?
Je viens de faire l'essai avec les jours -> OK,
avec les jours fériés -> problème ?

@+
FxM






Karine wrote:

Bonjour,

Je souhaite dans une colonne, à partir d'une première
date en A1, qu'en B1 s'affiche par exemple une date tel
que A1 + 1 semaine, et que C1= B1 + 2 semaines, D1 = C1 +
10 jours, etc.
Ceci en ne comptabilisant que les jours ouvrés...

merci de votre aide




Avatar
Frédéric Sigonneau
Bonsoir,

Essaye cette fonction perso VBA :

'================= Function PlusJOuvres(D, NbJours)
Dim Dt, i, An
Dim NbOr, Epacte As Integer
Dim PLune, LPaques, Arr(10) As Long

Dt = CLng(D)
Do
Dt = Dt + 1
An = Year(Dt) 'modif Alain Cros, mpfe
'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
'=================
Après l'avoir recopiée dans un module standard d'un classeur, tu peux, dans une
feuille de calcul de ce même classeur, écrire en B1 (pour une date de départ en
A1)

=PlusOuvres(A1;7)

pour obtenir la date d'A1 + 7 jours ouvrés.

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,

Je souhaite dans une colonne, à partir d'une première
date en A1, qu'en B1 s'affiche par exemple une date tel
que A1 + 1 semaine, et que C1= B1 + 2 semaines, D1 = C1 +
10 jours, etc.
Ceci en ne comptabilisant que les jours ouvrés...

merci de votre aide


Avatar
AV
Autre soluce...
Sans les macros complémentaires et avec une plage nommée "JrF" (liste des jours
fériés)
Matricielle (validation par ctrl+maj+entrée)

=PETITE.VALEUR(SI((JOURSEM(A1+LIGNE(INDIRECT("1:1000"));2)<6)*(ESTNA((EQUIV(A1+L
IGNE(INDIRECT("1:1000"));JrF;0))));A1+LIGNE(INDIRECT("1:1000")));10)

PS : Le Xième jour ouvré après la date de A1 est représenté par le 2° argument
de la fontion PETITE.VALEUR (ici 10)

AV