Comment obtenir l'ancienne valeur d'une cellule modifiée dans Excel VBA ?

Je détecte les changements de valeurs de certaines cellules dans un tableur Excel comme ceci…

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim old_value As String
Dim new_value As String

For Each cell In Target

    If Not (Intersect(cell, Range("cell_of_interest")) Is Nothing) Then
        new_value = cell.Value
        old_value = ' what here?
        Call DoFoo (old_value, new_value)
    End If

Next cell

End Sub

En supposant que ce n’est pas une trop mauvaise façon de coder cela, comment puis-je obtenir la valeur de la cellule avant le changement ?

Essayez ceci :

Déclarez une variable, disons :

Dim oval

et dans l’événement SelectionChange :

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
oval = Target.Value
End Sub

et dans votre événement Worksheet_Change, définissez :

old_value = oval