Option Explicit
Private Plage As Range
Public Sub Afficher(ByVal Cible As Range)
Dim C As Long
Me.Caption = Cible(1, 1).Value
Set Plage = Cible.Resize(, 16)
For C = 1 To 7
Me("CheckBox" & C).Value = Plage(1, C + 7).Font.ColorIndex = 2
Next C
Me.Show
End Sub
Private Sub CommandButton1_Click()
Const LMax = 22, CMax = 16
Dim L As Long, C As Long
For C = 1 To 7
If Not Me("CheckBox" & C).Value Then
Plage(1, C + 7).Font.ColorIndex = xlAutomatic
Plage(1, C + 7).Interior.ColorIndex = 1
Else
Plage(1, C + 7).Font.ColorIndex = 2
End If: Next C
'fermer l'userform
Me.Hide
'mise à jour de la couleur de police selon la colonne D
For L = 2 To LMax
Plage(L, 5).Resize(, CMax - 4).Interior.ColorIndex = Plage(L, 4).Font.ColorIndex
Next L
'mise à jour de la couleur de cellule (gris) selon le contenu de la ligne 2
If Plage(1, 4).Font.ColorIndex = xlAutomatic Then
Plage(2, 5).Resize(LMax - 1, CMax - 4).Interior.ColorIndex = 16 'gris
End If
' mise à jour en rouge des cellules vides et police "blanc" en ligne 2
For C = 5 To CMax
If Plage(1, C).Font.ColorIndex = 2 Then 'couleur blanc
Plage(2, C).Resize(LMax - 1).Interior.ColorIndex = 3 'couleur Rouge
End If
Next C
End Sub
Private Sub CommandButton2_Click()
Me.Hide
End Sub