1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Option Explicit
Sub JoursOuvres()
' Adaptation d'un code trouvé sur la toile :
' ajout du calcul des Jours férier sur les deux années au cas ou les dates ne sont pas sur la même année.
Dim Debut As Date
Dim Fin As Date
Dim CompA As Integer
Dim NbJoursOuvres As Integer
Dim Feriers As Boolean
Dim Jourferies(22) As Date ' 2 ans (22 jours feriers)
Dim indice As Integer
Dim annee As Integer
Dim Paques As Date
Dim Jour As Date
Debut = "10/01/2006"
Fin = "10/12/2007"
If Debut < Fin Then
indice = 0
For CompA = Year(Debut) To Year(Fin) ' Calcul les jours fériers
annee = CompA
' Calcul la Date de la pleine lune Pascale
Paques = DateSerial(annee, 3, 23) + ((2 * (annee Mod 4) + (4 * (annee Mod 7) + _
(6 * (((19 * (annee Mod 19)) + 24) Mod 30) + 5))) Mod 7) + _
((19 * (annee Mod 19) + 24) Mod 30) - 1
Jourferies(indice + 1) = DateSerial(annee, 1, 1) ' Premier janvier
Jourferies(indice + 2) = DateSerial(annee, 5, 1) ' 1 Mai
Jourferies(indice + 3) = DateSerial(annee, 5, 8) ' 8 mai
Jourferies(indice + 4) = DateSerial(annee, 7, 14) ' 14 juillet
Jourferies(indice + 5) = DateSerial(annee, 8, 15) ' 15 Aout
Jourferies(indice + 6) = DateSerial(annee, 11, 1) ' 1 novembre
Jourferies(indice + 7) = DateSerial(annee, 11, 11) ' 11 novembre
Jourferies(indice + 8) = DateSerial(annee, 12, 25) ' Noel
Jourferies(indice + 9) = Paques + 1 ' Lundi de paques
Jourferies(indice + 10) = Paques + 39 ' l'Ascenssion
Jourferies(indice + 11) = Paques + 50 ' lundi de pentecote ' par principe
indice = indice + 11
Next CompA
NbJoursOuvres = 0
For Jour = Debut To Fin ' recuperation des jours ouvres
Feriers = False
For CompA = 1 To 22
If Jour = Jourferies(CompA) Then Feriers = True
Next CompA
' Si le jour est ni un samedi ni un dimanche ni un jour ferier
If Weekday(Jour) <> 1 And Weekday(Jour) <> 7 And Not Feriers Then NbJoursOuvres = NbJoursOuvres + 1
Next Jour
End If
End Sub |
Partager