1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Private Sub Worksheet_Change(ByVal Target As Range)
Dim vSaisie As Variant, r As Range
Debug.Print "Worksheet_Change", Target; ""
If Target.Count > 1 Or Target.Row < 4 Then Exit Sub '--- hors zone d'application
Application.EnableEvents = False
vSaisie = Target
Application.Undo '==> Target = ancienne valeur, celle avant la saisie
If Target = vSaisie Then
'--- pas de changement --- ne rien faire
Else
'--- enregistrer dans Histo
Set r = Worksheets("Histo").Range("A" & Rows.Count).End(xlUp).Offset(1, 0) '--- cellule sous la liste
r = Now
r.Offset(0, 1) = Range("A" & Target.Row) '--- Code XLS
r.Offset(0, 2) = Target.Column '--- n° colonne de la cellule modifiée
r.Offset(0, 3) = Target '--- valeur avant modification
r.Offset(0, 4) = vSaisie '--- valeur après modification
End If
Target = vSaisie '--- réinscrit la dernière valeur saisie
Application.EnableEvents = True
Target.Offset(0, 1).Select
End Sub |
Partager