VBA ajouter n jours ouvrés à la date du jour

C@thy

XLDnaute Barbatruc
Bonjour le forum,

je cherche à mettre dans une cellule la date du jour + 5 jours ouvrés

Code:
Function fer(an%) 'liste de tous les jours fériés
Dim pq
  pq = paq(an)
  fer = Array(DateSerial(an, 1, 1), DateSerial(an, 5, 1), DateSerial(an, 5, 8), DateSerial(an, 7, 14), DateSerial(an, 8, 15), DateSerial(an, 11, 1), DateSerial(an, 11, 11), DateSerial(an, 12, 25), pq + 1, pq + 39, pq + 50)
End Function


Function paq(a%, Optional T As Boolean = False) 'Calcul date de Pâques
Dim g&, c&, d&, h&, I&, r&
  paq = ""
  If a > 1582 Then
    g = a Mod 19
    c = Int(a / 100)
    d = Int(c / 4)
    h = (19 * g + c - d - Int((8 * c + 13) / 25) + 15) Mod 30
    I = (Int(h / 28) * Int(29 / (h + 1)) * Int((21 - g) / 11) - 1) * Int(h / 28) + h
    r = DateSerial(a - 400 * (a < 1900), 3, 28) + I - (2 + a + Int(a / 4) + I + d - c) Mod 7
    If T Then
      paq = IIf(Day(r) = 1, "1er", Day(r)) & " " & IIf(r > 3, "avril", "mars") & " " & a
    Else
      paq = Day(r) & "/" & Month(r) & "/" & a
      If a > 1899 Then paq = CDbl(CDate(paq))
    End If
  End If
End Function
Et c'est là que ça se corse :

dans une cellule je dois ajouter 5 jours ouvrés et dans une autre ... six semaines ouvrées!:eek::rolleyes:
Code:
Sub AjouterJoursOuves()
Dim an As Integer, I As Integer
Dim N, fr

an = Year(Date)
fr = fer(an)

N = Date + 1
For I = 0 To UBound(fr)
     If N = fr(I) Then
...
...
end sub
Si vous pouviez m'apporter votre aide je vous serai infiniment reconnaissante:):cool:
Merci à vous

Bises

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : VBA ajouter n jours ouvrés à la date du jour

Bonjour C@thy,

Cette formule matricielle à valider par Ctrl+Maj+Entrée :

Code:
=MIN(SI(JOURSEM(DATE(ANNEE(AUJOURDHUI());1;LIGNE(2:4));2)<6;DATE(ANNEE(AUJOURDHUI());1;LIGNE(2:4))))
donne le 1er jour ouvré de l'année en cours.

A+
 

C@thy

XLDnaute Barbatruc
Re : VBA ajouter n jours ouvrés à la date du jour

Merci Gérard, mais c'est dans une procédure que je dois faire un traitement particulier si on est le 1er jour travaillé de l'année : dans ce cas on ouvre le fichier compte 2013 et on cloture l'année (total à la fin) sinon on ouvre compte 2014 et on ecrit le solde du jour sur la derniere ligne. Voila tu sais tout.

Bises
 

job75

XLDnaute Barbatruc
Re : VBA ajouter n jours ouvrés à la date du jour

Re,

Bonjour Pierre, merci, mes meilleurs voeux également.

C@thy tu peux utiliser ce code :

Code:
Dim j As Date
For j = "2/1" To "4/1"
  If Weekday(j, 2) < 6 Then Exit For
Next
If Date = j Then
  '---suite du code---
  MsgBox "Premier jour ouvré de l'année..." 'facultatif
End If
A+
 

job75

XLDnaute Barbatruc
Re : VBA ajouter n jours ouvrés à la date du jour

Re,

Si tu oublies d'ouvrir le fichier le 1er jour ouvré, tu ne crains pas d'avoir un problème ?

Il vaudrait mieux qu'il y ait une ligne "total" dans chaque fichier avec une formule donnant toujours le total...

A+
 

C@thy

XLDnaute Barbatruc
Re : VBA ajouter n jours ouvrés à la date du jour

On ne peut pas oublier ce fichier est obligatoirement ouvert chaque jour travaillé car il faut clôturer la journée de la veille ouvrée chaque jour sinon on ne peut plus rien faire sur le compte. Il faut juste tester si on est le 1er jour ouvré de l'année afin de ne pas ouvrir le fichier compte de l'année en cours

voilà. ...

bises

c@thy
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren