Calcul délai sur 6 jours/semaine

Delys

XLDnaute Nouveau
Bonjour à tous,

Après recherche et lecture des post, je ne trouve pas de réponse à mon problème.

J'aimerai avoir la date butoir de la réception d'une lettre suivant un délai connu.
J'utilise =SERIE.JOUR.OUVRE(A1;B1;E1), en ayant l'outil d'analyse
A1 : date début
B1 : nb jours
E1 : jours fériés

Mais cette formule exclue le samedi et dimanche. Or, je veux qu'il inclue le samedi dans son calcul, et excluant le dimanche et jours fériés.

Connaissez vous une formule adaptée à mon souci, ou dois-je ajouter un arguement?

Merci d'avance.


Delys
 

fred65200

XLDnaute Impliqué
Re : Calcul délai sur 6 jours/semaine

Utilise la fonction perso jointe
Cette fonction n'est pas de moi,
je t'ai juste modifié un 6 en 7 pour que tu n'aies que les dimanches en non ouvrés

Ajuste les dimension du tableau Arr(10) en Arr(9) si tu veux supprimer le lundi de pentecôte

Code:
Function PlusJOuvres(D, NbJours)
'http://perso.orange.fr/frederic.sigonneau/code/Calendriers/AjouterJoursOuvres.txt
Dim Dt, i
Dim NbOr, Epacte As Integer
Dim PLune, LPaques, Arr(10) As Long
 An = Year(D)
  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)
    Arr(5) = DateSerial(An, 5, 8)
    Arr(6) = DateSerial(An, 7, 14)
    Arr(7) = DateSerial(An, 8, 15)
    Arr(8) = DateSerial(An, 11, 1)
    Arr(9) = DateSerial(An, 11, 11)
    Arr(10) = DateSerial(An, 12, 25)
    
    'ajoute si ouvré
' Samedi et dimanche
'    If (IsError(Application.Match(Dt, Arr, 0))) = True And _
'        (Weekday(Dt, vbMonday) < 6) = True Then
' Que les dimanches
  If (IsError(Application.Match(Dt, Arr, 0))) = True And _
        (Weekday(Dt, vbMonday) < 7) = True Then
     i = i + 1
    End If
  Loop Until i = NbJours
  
  PlusJOuvres = Dt
End Function 'fs
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Calcul délai sur 6 jours/semaine

Bonsoir,

En matriciel:

A2: début
B2: nb jours ouvrés

=INDEX(PETITE.VALEUR(SI((JOURSEM(A2+LIGNE(INDIRECT("1:"&B2*2));2)<7)*(NB.SI(fériés;A2+LIGNE(INDIRECT("1:"&B2*2)))=0);A2+LIGNE(INDIRECT("1:"&B2*2)));LIGNE(INDIRECT("1:"&B2*2)));B2)
valider avec maj+ctrl+entrée

JB
 

Pièces jointes

  • MatricielSerieJourOuvre.xls
    21.5 KB · Affichages: 111

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom