Bonjour Francois,
On n'y est toujours pas, désolé ;)
En fait je crois que ma demande n'est pas claire.
J'utilise le code VBA suivant mais il ne fonctionne que de gauche à droite (et pas de droite à gauche).
Auriez-vous une modification à proposer pour qu'il fonctionne dans les 2 sens ?
Voici le code VBA :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim todayDate As Date
Dim g4Value As Long
Dim d11Value As Long
Dim d12Value As Long
Dim maxDate As Date
Dim nameCell As Range
Dim cellRow As Range
Dim cell As Range
Dim cellColor As Long
Application.EnableEvents = False
' Récupérer la date du jour depuis D3
todayDate = Me.Range("D3").Value
' Récupérer les valeurs de G4, D11, et D12
g4Value = Me.Range("G4").Value 'durée de validité'
d11Value = Me.Range("D11").Value 'alarme à 30jours (orange clair)'
d12Value = Me.Range("D12").Value 'alarme à 90jours (orange clair)'
' Définir la date maximale (date du jour + 730 jours)
maxDate = todayDate + 730
' Boucle pour chaque ligne de 7 à 107
For i = 7 To 107
' Définir la plage de dates (G7:BL7) pour la ligne actuelle
Set cellRow = Me.Range("G" & i & ":BL" & i)
' Définir la cellule du nom (F7:F107) pour la ligne actuelle
Set nameCell = Me.Cells(i, 6) ' Colonne F
' Réinitialiser la mise en forme
nameCell.Font.Color = RGB(0, 0, 0) ' Noir (couleur de police par défaut)
nameCell.Font.Bold = False
cellColor = RGB(0, 0, 0) ' Couleur de base (noir)
' Vérifier si une des dates dans la ligne satisfait les conditions
Dim cellHasColor As Boolean
cellHasColor = False
For Each cell In cellRow
If Not IsEmpty(cell.Value) And IsDate(cell.Value) Then
Dim cellDate As Date
cellDate = CDate(cell.Value)
If cellDate < todayDate - g4Value Then
cellColor = RGB(255, 0, 0) ' Rouge
cellHasColor = True
ElseIf cellDate >= todayDate - g4Value And cellDate <= todayDate - g4Value + d11Value Then
cellColor = RGB(255, 140, 0) ' Orange foncé
cellHasColor = True
ElseIf cellDate > todayDate - g4Value + d12Value And cellDate <= maxDate Then
cellColor = RGB(0, 128, 0) ' Vert
cellHasColor = True
ElseIf cellDate > todayDate - g4Value + d11Value And cellDate <= todayDate - g4Value + d12Value Then
cellColor = RGB(255, 192, 0) ' Orange clair
cellHasColor = True
End If
End If
Next cell
' Mettre à jour la couleur
If cellHasColor Then
nameCell.Font.Color = cellColor
End If
Next i
Application.EnableEvents = True
End Sub
Merci.
Raphael.