'*********************************************
'* Routine de création du calendrier mensuel *
'*********************************************
Sub ComposerMois(Mois, Année)
'* Déclaration des variables
Dim LargeurColonne As Byte, Jour As Integer
'* Largeur de la 3e colonne du calendier
'* MODIFIABLE
LargeurColonne = 20
'* Désactivation de l'affichage de la grille
ActiveWindow.DisplayGridlines = False
'* Insertion du nom du mois
With ActiveSheet.Range("A1")
.Value = Format(DateSerial(Année, Mois, 1), "mmmm yyyy")
.Font.ColorIndex = Couleurs(3, 1)
.Interior.ColorIndex = Couleurs(3, 0)
'* Police, taille et gras
'* MODIFIABLES
.Font.Name = "Arial"
.Font.Size = 14
.Font.Bold = True
End With
'* Boucle d'insertion des jours
For Jour = 1 To 31
If Month(DateSerial(Année, Mois, Jour)) <> Mois Then Exit For
'* Insertion du jour du mois
'Range("A2").Offset(Jour, 1).Value = Jour
'* Insertion du jour de la semaine
Range("A2").Offset(Jour, 0).Value = Format(DateSerial(Année, Mois, Jour), "dddd dd mmmm yyyy")
Range("A2").Offset(Jour, 0).HorizontalAlignment = xlRight
Range([A2].Offset(Jour, 0), [A2].Offset(Jour, 1)).Select
'* Les bordures
With Selection.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = Couleurs(4, 0)
End With
'* Si c'est un jour de congé hebdomaire
If Congés(Weekday(DateSerial(Année, Mois, Jour))) = 1 Then
'* Application de la couleur réservée aux jours de congé
Selection.Interior.ColorIndex = Couleurs(2, 0)
Selection.Font.ColorIndex = Couleurs(2, 1)
Selection.Interior.Pattern = xlSolid
'* Sinon application de la couleur réservée aux jours de semaine
Else
Selection.Interior.ColorIndex = Couleurs(1, 0)
Selection.Font.ColorIndex = Couleurs(1, 1)
Selection.Interior.Pattern = xlSolid
End If
'* Est-ce un jour férié ?
For Each cell In ThisWorkbook.Sheets("jours fériés").Range("A2:A50")
'* Si c'est un jour férié ...
If DateSerial(Année, Mois, Jour) = cell.Value Then
'* ... introduction de la dénomination du jour
Range("A2").Offset(Jour, 1).Value = cell.Offset(0, 1)
Range("A2").Offset(Jour, 1).HorizontalAlignment = xlCenter
'* et application de la couleur des jours de congé
Selection.Interior.ColorIndex = Couleurs(2, 0)
Selection.Interior.Pattern = xlSolid
Selection.Font.ColorIndex = Couleurs(2, 1)
End If
Next
Next
'* Ajustement de la largeur des colonnes
Columns("A:A").EntireColumn.AutoFit
' Columns("A:A").EntireColumn.AutoFit
' Columns("B:B").EntireColumn.AutoFit
Columns("B:B").ColumnWidth = LargeurColonne
End Sub