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

  • Initiateur de la discussion Initiateur de la discussion C@thy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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!😱🙄
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🙂😎
Merci à vous

Bises

C@thy
 
Dernière édition:
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+
 
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
 
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+
 
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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
5
Affichages
527
Réponses
4
Affichages
461
Réponses
5
Affichages
531
Retour