Sub MajProg()
Dim Cel As Object
Dim DateDeb, DateEnCours, DateFin
Dim TabMois(12), MonInd As Integer
Dim I As Integer
'
TabMois(1) = "Janvier": TabMois(2) = "Fevrier": TabMois(3) = "Mars"
TabMois(4) = "Avril": TabMois(5) = "Mai": TabMois(6) = "Juin"
TabMois(7) = "Juillet": TabMois(8) = "Aout": TabMois(9) = "Septembre"
TabMois(10) = "Octobre": TabMois(11) = "Novembre": TabMois(12) = "Decembre"
'
Sheets(nomfeuille).Select
Range("D8:H23").Select
Selection.ClearContents
DateDeb = Sheets(nomfeuille).Range("D3")
DateEnCours = DateDeb
DateFin = Sheets(nomfeuille).Range("D4")
' On sort de la boucle si il manque une date de congé
If DateDeb = "" Or DateFin = "" Then Exit Sub
' Détermine le premier mois sur lequel on dopit commencer
MonInd = Month(DateEnCours)
' Commence la boucle pour chaque jour du planning
Do While DateEnCours < DateFin
' Vérifie si la date correspond aux congés, si oui inscrit "V"
For Each Cel In Sheets(TabMois(MonInd)).Range("B2:AF2")
If Cel.Value >= DateDeb And Cel.Value <= DateFin Then
Application.EnableEvents = False
For I = 1 To 8 ' Nb personne
Sheets(nomfeuille).Cells(6 + (I * 2), 4 + (DateEnCours - DateDeb)).Value = _
Sheets(TabMois(MonInd)).Cells(2 + I, Cel.Column)
Next I
Application.EnableEvents = True
' Met à jour la date en cours de traitement
DateEnCours = Cel.Value
End If
' Si on a dépassé la date de fin
If Cel.Value > DateFin Then Exit For
Next
' Incrémente le tableau des feuilles de 1
If DateEnCours < DateFin Then
MonInd = MonInd + 1
End If
Loop
End Sub