Bonjour à tous,
Dans le cadre d'un projet je me suis lancé dans la programmation d'un planning mensuel pour aider une entreprise à mieux s'organiser,
les heures travaillées change en fonction des jours, et il y a un roulement chaque mois entre les employés (certains commencent à 8h, d'autres 9h... )
Ce planning inclus une partie vacances, je voudrais coder en sorte que quand on remplis le tableau de vacance, les lignes de planning correspondant au nom de l'employé en vacance soient surlignées ET (c'est la que j'ai le pb) sur une certaine période,
Par exemple :
Sub vacances()
Dim vac1 As String
Dim vac2 As String
Dim vac3 As String
Dim vac4 As String
Dim i As Integer
vac1 = Cells(18, 15)
vac2 = Cells(19, 15)
vac3 = Cells(20, 15)
vac4 = Cells(21, 15)
If vac1 = "" And vac2 = "" And vac3 = "" And vac4 = "" Then
MsgBox "Remplir les vacances !"
End If
For i = 12 To 271
If vac1 <> "" Or vac2 <> "" Or vac3 <> "" Or vac4 <> "" Then
Select Case vac1
Case "employé1"
If Cells(i + 1, 3) = "employé1" Then
Range(Cells(i + 1, 4), Cells(i + 1, 12)).Interior.Color = RGB(255, 255, 200)
Cells(i + 1, 13) = "Congés"
Cells(i + 1, 13).Font.Color = RGB(255, 0, 0)
End If
Case "employé2"
If Cells(i + 1, 3) = "employé2" Then
Range(Cells(i + 1, 4), Cells(i + 1, 12)).Interior.Color = RGB(0, 215, 250)
Cells(i + 1, 13) = "Congés"
Cells(i + 1, 13).Font.Color = RGB(255, 0, 0)
End If
Case "employé3"
If Cells(i + 1, 3) = "employé3" Then
Range(Cells(i + 1, 4), Cells(i + 1, 12)).Interior.Color = RGB(250, 200, 255)
Cells(i + 1, 13) = "Congés"
Cells(i + 1, 13).Font.Color = RGB(255, 0, 0)
End If
End Select
End If
Next i
End Sub
ce programme permet de surligner TOUTES les lignes du planning correspondant au nom de l'employé en congé sur le mois entier, sauf que je voudrais limiter ça aux dates de vacances, parfois juste 2 jours ou 1 semaine,
Sub daate()
Dim t As Integer
Dim d1 As Date
Dim d2 As Date
Dim d3 As Date
Dim d4 As Date
Dim d5 As Date
Dim d6 As Date
Dim d7 As Date
Dim d8 As Date
d1 = CLng(Cells(18, 16))
d2 = CLng(Cells(18, 17))
d3 = CLng(Cells(19, 16))
d4 = CLng(Cells(19, 17))
d5 = CLng(Cells(20, 16))
d6 = CLng(Cells(20, 17))
d7 = CLng(Cells(21, 16))
d8 = CLng(Cells(21, 17))
For t = 0 To 271
If d1 <= Cells(t + 13, 1) And Cells(t + 13, 1) <= d2 Then
Cells(t + 13, 13).Interior.Color = RGB(255, 0, 0)
End If
Next t
End Sub
J'ai pensé à un truc comme ça mais impossible de l'incorporer dans le premier,
Peut-être avec do while ?
Merci d'avance pour vos conseils :)
ps : je suis pas un expert vba ne jugez pas la lourdeur du programme