Une macro pour calculer le prochain jour ouvrable ?

Bonjour Forum,

Je souhaite créer une macro déclenchée par un bouton ou un raccourci, mais j’ai besoin d’aide pour la mettre au point.

Etant donné une cellule comportant une date, je souhaite que la macro lui ajoute 1, 2 ou 3 jours, pour que la cellule affiche le prochain jour ouvrable (sans tenir compte des jours fériés).

Par exemple :

Valeur initiale valeur après macro :

lun 24/02 → mar 25/02

mar 25/02 → mer 26/02

mer 26/02 → jeu 27/02

jeu 27/02 → ven 28/02

ven 28/02 → lun 03/03

sam 01/03 → lun 03/03

dim 02/03 → lun 03/03

Quelqu’un saurait-il m’aider ?

Merci !

Bonsoir,

Voir fichier et l'aide sur la fonction SERIE.JOUR.OUVRE().

Cdlt.

107gloub.zip (4.15 Ko)

Je ne connaissais pas cette fonction, merci !!!!

En revanche, quand j'essaie de créer une macro qui remplace un jour quelconque par le prochain jour ouvré, ça ne marche pas, sans doute parce que ma syntaxe n'est pas la bonne...

Des conseils ?

Sub Prochain_jour_ouvre()

ActiveCell.FormulaR1C1 = "=WORKDAY(RC,1)"

End Sub

Re,

A tester.

Une fonction personnalisée à utiliser dans une feuille de calcul ou dans un module VBA.

42gloub.zip (11.64 Ko)
Option Explicit
Public Function serieJO(D As Date, n As Integer) As Date
    If IsEmpty(D) Or IsEmpty(n) Or Not IsDate(D) Then Exit Function
    serieJO = Application.WorksheetFunction.WorkDay(D, n)
End Function

Merci pour ta réponse.

Mais je ne vois pas comment l'adapter à mon besoin, qui est d'écraser la valeur actuelle de la cellule par la date du prochain jour ouvrable...

Bonsoir,

Merci de joindre un fichier avec des explications.

Cdlt.

Et voilà !

(en espérant que ça clarifie ma demande)

55gloub-2.xls (13.50 Ko)

Re,

Tes valeurs sont elles normalement des dates ou du texte?

Cdlt.

Re,

A tester en fonction des données réelles.

Cdlt

Option Explicit
'----------------------------------------------------------------
'Les dates sont des dates.
Public Sub AjoutUnJourNum()
Dim Ws As Worksheet
Dim derLigne As Long, i As Long
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil2")
    With Ws
        derLigne = .Range("B" & Rows.Count).End(xlUp).Row
        For i = 7 To derLigne
            .Cells(i, 2) = serieJO(.Cells(i, 2), 1)
            .Cells(i, 2).NumberFormat = "ddd dd/mm"
        Next
    End With
    Set Ws = Nothing
End Sub
'----------------------------------------------------------------
'Les dates ne sont pas des dates mais du texte (format jjj jj/mm)
Public Sub AjoutUnJourTexte()
Dim Ws As Worksheet
Dim derLigne As Long, i As Long
Dim d As Date
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil2")
    With Ws
        derLigne = .Range("B" & Rows.Count).End(xlUp).Row
        For i = 7 To derLigne
            d = CDate(Right(.Cells(i, 2), 5))
            .Cells(i, 2) = serieJO(d, 1)
            .Cells(i, 2).NumberFormat = "ddd dd/mm"
        Next
    End With
    Set Ws = Nothing
End Sub
'----------------------------------------------------------------
Public Function serieJO(d As Date, n As Integer) As Date
    If IsEmpty(d) Or IsEmpty(n) Or Not IsDate(d) Then Exit Function
    serieJO = Application.WorksheetFunction.WorkDay(d, n)
End Function

Merci Jean-Eric !

J'ai tenté de mettre tout ça en musique dans un fichier (en PJ), mais ça ne marche pas (

(il faut dire aussi que je suis ignare en VBA).

43gloub-3.zip (7.40 Ko)

Bonjour,

Voir nouveau fichier.

A te relire si

Cdlt

29gloub-3.zip (37.44 Ko)

Merci !

Ca marche en effet, mais :

1/ c'est un peu fastidieux à mettre en place dans plusieurs feuilles ou classeurs

2/ le code doit être écrit pour une cellule précise.

Est-ce qu'il y aurait moyen de faire juste l'équivalent de (désolé pour le charabia fonctions Excel + code VBA) :

  • si (joursem(LC);2) <5 → ActiveCell = ActiveCell +1
  • si (joursem(LC);2) =5 → ActiveCell = ActiveCell +3
  • si (joursem(LC);2) =6 → ActiveCell = ActiveCell +2
  • si (joursem(LC);2) =7 → ActiveCell = ActiveCell +1

Du coup je pourrais le mettre dans mon classeur de macros personnelles et le lancer pour n'importe quelle cellule.

En espérant que ça ne t'embête pas trop de repartir sur autre chose (qui plus est, moins élégant)...

Re,

Un truc comme ça

Cdlt

69gloub-3.zip (37.63 Ko)

Yeah !

C'est parfait, merci

Rechercher des sujets similaires à "macro calculer prochain jour ouvrable"