Dans l'article qui suit, je vous propose plusieurs fonctions VBA qui vous permettront de calculer les dates des jours fériés mobiles au Canada:
- la Fête de la Reine (le lundi précédant le 25 mai)
- la Fête du Travail (premier lundi de septembre)
- l'Action de Grâce (2ème lundi d'octobre)
Si vous pensez à d'autres jours fériés, n'hésitez pas de m'en faire part dans les commentaires et je vais l'ajouter à la liste.
Pour chacun des ces jours fériés canadiens, vous trouverez ci-dessous deux fonctions VBA distinctes:
- une qui teste si une date de votre choix correspond ou non à la fête en question. Ces fonctions ont comme argument la date qui doit être testée et renvoient comme résultat un Booléen (
Vrai
ou Faux
/ True
ou False
).
- une deuxième qui retourne la date de la fête pour une année donnée. Ces fonctions ont comme argument une année (valeur de type
Integer
) et retournent comme résultat une date (valeur de type Date
).
VBA: la Fête de la reine
Code VBA: jours fériés au Canada - la Fête de la Reine
Fonction VBA pour tester si la date correspond à la Fête de la Reine
|
Public Function EstFeteDeLaReine(MaDate As Date) 'par Excel-Malin.com ( https://excel-malin.com/ ) EstFeteDeLaReine = False For x = 24 To 17 Step -1 If MaDate = DateSerial(Year(MaDate), 5, x) And Weekday(MaDate, vbMonday) = 1 Then EstFeteDeLaReine = True Exit Function End If Next x End Function |
Fonction VBA pour calculer la date de la Fête de la Reine pour une année donnée
|
Public Function DateFeteDeLaReine(Annee As Integer) 'par Excel-Malin.com ( https://excel-malin.com/ ) DateFeteDeLaReine = "" For x = 24 To 17 Step -1 If Weekday(DateSerial(Annee, 5, x), vbMonday) = 1 Then DateFeteDeLaReine = DateSerial(Annee, 5, x) Exit Function End If Next x End Function |
VBA: la Fête du Travail
Code VBA: jours fériés au Canada - la Fête du Travail
Fonction VBA pour tester si la date correspond à la Fête du Travail
|
Public Function EstFeteDuTravail(MaDate As Date) 'par Excel-Malin.com ( https://excel-malin.com/ ) EstFeteDuTravail = False For x = 1 To 7 If MaDate = DateSerial(Year(MaDate), 9, x) And Weekday(MaDate, vbMonday) = 1 Then EstFeteDuTravail = True Exit Function End If Next x End Function |
Fonction VBA pour calculer la date de la Fête du Travail pour une année donnée
|
Public Function DateFeteDuTravail(Annee As Integer) 'par Excel-Malin.com ( https://excel-malin.com/ ) DateFeteDuTravail = "" For x = 1 To 7 If Weekday(DateSerial(Annee, 9, x), vbMonday) = 1 Then DateFeteDuTravail = DateSerial(Annee, 9, x) Exit Function End If Next x End Function |
VBA: l'Action de Grâce (Thanksgiving)
Code VBA: jours fériés au Canada - l'Action de Grâce
Fonction VBA pour tester si la date correspond à l’Action de Grâce (Thanksgiving)
|
Public Function EstActionDeGrace(MaDate As Date) 'par Excel-Malin.com ( https://excel-malin.com/ ) EstActionDeGrace = False For x = 8 To 15 If MaDate = DateSerial(Year(MaDate), 10, x) And Weekday(MaDate, vbMonday) = 1 Then EstActionDeGrace = True Exit Function End If Next x End Function |
Fonction VBA pour calculer la date de l’Action de Grâce pour une année donnée
|
Public Function DateActionDeGrace(Annee As Integer) 'par Excel-Malin.com ( https://excel-malin.com/ ) DateActionDeGrace = "" For x = 8 To 15 If Weekday(DateSerial(Annee, 10, x), vbMonday) = 1 Then DateActionDeGrace = DateSerial(Annee, 10, x) Exit Function End If Next x End Function |
Pour le calcul des dates de Pâques, veuillez consulter ce tutoriel dédié aux dates de Pâques.
Liste des Jours fériés au Canada sur Wikipédia.
Pour aller plus loin dans VBA
Voici quelques autres sujets qui pourraient vous intéresser:
Commentaire sur “VBA: calcul des fêtes et jours fériés au Canada”
Merci du Québec pour ces codes!