Bonjour micsel voici une piste
Private Sub Worksheet_Change(ByVal Target As Range)
Dim AffectedRange As Range
Dim Cell As Range
' Spécifiez la plage affectée (colonne G) où vous saisissez D, L ou R
Set AffectedRange = Intersect(Target, Me.Range("G:G"))
' Sortez si la plage affectée est vide
If AffectedRange Is Nothing Then Exit Sub
' Désactivez le calcul automatique
Application.Calculation = xlManual
' Parcourez chaque cellule modifiée
For Each Cell In AffectedRange
If Cell.Value = "D" Or Cell.Value = "L" Or Cell.Value = "R" Then
' Placez la valeur actuelle dans la colonne F
Cell.Offset(0, -1).Value = Now
Else
' Effacez la cellule F si G ne contient pas D, L ou R
Cell.Offset(0, -1).ClearContents
End If
Next Cell
' Réactivez le calcul automatique
Application.Calculation = xlAutomatic
End Sub
Ce code VBA est un gestionnaire d'événements Worksheet_Change qui s'exécute chaque fois qu'une modification est apportée à la feuille de calcul. Il vérifie si une lettre D, L ou R est entrée dans la colonne G. Si c'est le cas, il place la date actuelle dans la colonne F. Si une autre valeur est entrée dans la colonne G, la cellule correspondante de la colonne F est effacée. Il désactive également temporairement le calcul automatique d'Excel pour éviter que MAINTENANT() ne se mette à jour à chaque modification.