Bonjour Johan,
Ta demande semble complexe, ce qui doit expliquer l'absence de réponse rapide du forum...
Donc je me lance, avec une réponse partielle....
Ton programme devra te permettre d'effectuer les opération dans l'odre suivant :
1) Elaboration du calendrier (pour cela, tu trouveras des bouts de codes hyper intéressant à partir de la page d'acceuil du site)
2) Couleur pour les jours de la semaine
3) Griser le 4eme dimanche du mois (dans quelle colonne, ton exemple ne semble pas le montrer...)
3) Remplir en rouge les colonnes concernant des jours fériés et les 01/01 et 25/12...
4) Faire les totaux mensuels
5) Créer une seconde macro en cas de modification de la feuille, pour refaire les totaux....
En ce qui me concerne, je peux t'aider pour certaines étapes...
Etape 2 :
Dim Cellule As Range
For Each Cellule In Worksheets("2003").Range("A3:A33")
If Cellule.Value = "L" Or "M" Or "J" Or "V" Or "S" Then
Cellule.Font.ColorIndex = 1 'Noir
Cellule.Interior.ColorIndex = 2 'Blanc
Cellule.Offset(0,1).ColorIndex = 1
Cellule.Offset(0,1).Interior.ColorIndex = 2
End If
If Cellule.Value = "L" Or "M" Or "J" Then
Cellule.Offset(0,2).ColorIndex = 1
Cellule.Offset(0,2).Interior.ColorIndex = 37 'Bleu
Cellule.Offset(0,3).ColorIndex = 1
Cellule.Offset(0,3).Interior.ColorIndex = 15 'Gris
End If
If Cellule.Value = "V" Then
Cellule.Offset(0,2).ColorIndex = 1
Cellule.Offset(0,2).Interior.ColorIndex = 37 'Bleu
Cellule.Offset(0,3).ColorIndex = 1
Cellule.Offset(0,3).Interior.ColorIndex = 38 'Rose
End If
If Cellule.Value = "S" Then
Cellule.Offset(0,2).ColorIndex = 1
Cellule.Offset(0,2).Interior.ColorIndex = 15 'Gris
Cellule.Offset(0,3).ColorIndex = 1
Cellule.Offset(0,3).Interior.ColorIndex = 38 'Rose
End If
If Cellule.Value = "D" Then
Cellule.Font.ColorIndex = 3 'Rouge
Cellule.Interior.ColorIndex = 2 'Blanc
Cellule.Offset(0,1).ColorIndex = 3
Cellule.Offset(0,1).Interior.ColorIndex = 2
Cellule.Offset(0,2).ColorIndex = 1
Cellule.Offset(0,2).Interior.ColorIndex = 15 'Gris
Cellule.Offset(0,3).ColorIndex = 1
Cellule.Offset(0,3).Interior.ColorIndex = 38 'Rose
End If
Next
Essaye avec ce petit bout de code, je reviens plus tard pour la suite...
@ +
William