Jour ouvrable précédent & jour ouvrable suivant en VBA



Si vous cherchez la manière de calculer, en VBA, le jour ouvrable précédent ou jour ouvrable suivant à une date spécifique, vous trouverez ci-bas la solution.
Il s'agit de deux fonctions qui utilisent comme argument la date par rapport à laquelle on doit chercher le jour ouvrable précédent et suivant.

Les fonctions sont assez simples et il vous suffira de les copier/coller dans votre Projet VBA
Attention: ces fonctions ne tiennent compte uniquement des week-ends (les jours fériés ne sont pas pris en compte).

Jour ouvrable précédent en VBA

Voici donc le code VBA de la première fonction…

Public Function JourOuvrablePrecedent(Jour As Date)
'par Excel-Malin ( https://excel-malin.com )

Select Case Weekday(Jour, vbMonday)
    Case 7: JourOuvrablePrecedent = Jour - 2 'si dimanche --> vendredi
    Case 1: JourOuvrablePrecedent = Jour - 3 'si lundi    --> vendredi
    Case Else: JourOuvrablePrecedent = Jour - 1
End Select

End Function

 

Jour ouvrable suivant en VBA

Et pour le jour ouvrable suivant, utilisez cette fonction:

Public Function JourOuvrableSuivant(Jour As Date)
'par Excel-Malin ( https://excel-malin.com )

Select Case Weekday(Jour, vbMonday)
    Case 5: JourOuvrableSuivant = Jour + 3 'si vendredi --> lundi
    Case 6: JourOuvrableSuivant = Jour + 2 'si samedi   --> lundi
    Case Else: JourOuvrableSuivant = Jour + 1
End Select
End Function

 

Attention au format Date!

Comme vous pouvez le voir, les deux fonctions travaillent avec les arguments de type Date. C'est à dire que quand vous voulez faire "passer" une date dans cette fonction, il doit vraiment s'agir d'une "Date" dans le sens du VBA. Une date comme "10/12/2019" ne va pas fonctionner car il s'agit d'une valeur de type String (chaîne de caractères).

La manière la plus simple et la plus fiable d'obtenir une valeur au format date est l'utilisation de la fonction VBA DateSerial(). De cette manière, vous évitez les mauvaises surprises comme par exemple la confusion entre le format européen (jj/mm/aaaa) et le format américain (mm/jj/aaaa).
Vous pouvez voir comment faire dans la section qui suit.

Exemples d'utilisation de ces deux fonctions

Voici donc un exemple qui montre comment trouver les deux jours ouvramble par rapport à une date déterminée (ici le 23/11/2019).

Sub ExempleJoursOuvrables()
'par Excel-Malin ( https://excel-malin.com )

Dim MaDate As Date
Dim JOprecedent As Date
Dim JOsuivant As Date

MaDate = DateSerial(2019, 11, 23) '=> AAAA, MM, DD

JOprecedent = JourOuvrablePrecedent(MaDate)
JOsuivant = JourOuvrableSuivant(MaDate)

MsgBox "Ma date: " & MaDate & Chr(13) & Chr(10) & _
"Jour ouvrable précédent: " & JOprecedent & Chr(13) & Chr(10) & _
"Jour ouvrable suivant: " & JOsuivant

End Sub

N'oubliez pas: pour que cet exemple fonctionne, vous devez avoir copié dans votre Projet VBA tous les trois codes sources se trouvant sur cette page (les 2 fonctions + la procédure (Sub) de test).

Pour en savoir plus sur VBA (et les dates)

D'autres articles intéressants au sujet des dates en VBA…

2 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.