Comment mémoriser ou enregistrer la valeur précédente d’une cellule modifiée dans Excel ?
Lorsque vous modifiez une cellule dans Excel, la valeur précédente est immédiatement écrasée et disparaît à moins que vous n’annuliez l’action. Si vous avez besoin de conserver cette ancienne valeur — pour comparaison, audit ou restauration —, deux solutions s’offrent à vous : soit capturer automatiquement cette valeur grâce à une courte routine VBA qui l’enregistre dans une colonne auxiliaire avant chaque modification, soit consulter l’historique des modifications via les outils Microsoft 365 (« Afficher les modifications » et historique des versions), à condition que votre fichier soit stocké sur OneDrive ou SharePoint. Ce tutoriel détaille ces deux approches afin que vous puissiez choisir celle qui s’aligne le mieux sur votre flux de travail et vos exigences en matière de gouvernance.
➤ Microsoft 365 — Consultez les valeurs précédentes et mises à jour des cellules avec Afficher les modifications et Historique des versions
Enregistrer la valeur précédente d’une cellule avec du code VBA dans Excel
Supposons que vous disposiez d’un tableau tel qu’illustré dans la capture d’écran ci-dessous. Lorsqu’une cellule de la colonne C est modifiée, vous souhaiterez peut-être enregistrer sa valeur précédente dans la cellule correspondante de la colonne G, ou ajouter automatiquement cette ancienne valeur en tant que commentaire, pour référence et examen ultérieurs. Cette approche s’avère particulièrement utile lorsque vous souhaitez tenir un journal évolutif ou retrouver facilement les anciennes valeurs lors de saisies de données continues ou de vérifications qualité.

Scénario clé : Pour les feuilles de calcul où vous examinez ou rapprochez fréquemment les modifications — comme les inventaires, les journaux ou le suivi financier — garder les valeurs précédentes à l’écran permet de gagner du temps et d’éviter toute perte accidentelle de données.
Pour commencer, ouvrez la feuille de calcul dans laquelle vous souhaitez conserver les valeurs précédentes, puis suivez ces étapes :
1. Cliquez avec le bouton droit sur l’onglet de la feuille, puis sélectionnez « Afficher le code » dans le menu contextuel pour ouvrir l’éditeur Visual Basic pour Applications (VBA). Voir la capture d’écran :

2. Dans la fenêtre « Microsoft Visual Basic pour Applications », collez le code VBA suivant dans la fenêtre de code. Cette macro enregistrera automatiquement la valeur précédente des cellules de la colonne cible dans une autre colonne.
Avant d’exécuter ce script, veillez à adapter les références des colonnes cibles dans le code. Dans ces exemples, « C:C » indique la colonne surveillée pour détecter les modifications, et le chiffre « 7 » correspond à la colonne G, où les valeurs précédentes sont enregistrées. Vous pouvez personnaliser ces références en fonction de votre propre disposition.
Code VBA : Enregistrer la valeur précédente d’une cellule dans une autre cellule
Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim xCell As Range
Dim xDCell As Range
Dim xHeader As String
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Previous value :"
x = xDic.Keys
For I = 0 To UBound(xDic.Keys)
Set xCell = Range(xDic.Keys(I))
Set xDCell = Cells(xCell.Row, 7)
xDCell.Value = ""
xDCell.Value = xDic.Items(I)
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
On Error GoTo Label1
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Set xDependRg = Target.Dependents
If xDependRg Is Nothing Then GoTo Label1
If Not xDependRg Is Nothing Then
Set xDependRg = Intersect(xDependRg, Range("C:C"))
End If
Label1:
Set xRg = Intersect(Target, Range("C:C"))
If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = xDependRg
ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
Set xChangeRg = xRg
Else
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
For I = 1 To xChangeRg.Areas.Count
Set xRgArea = xChangeRg.Areas(I)
For J = 1 To xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Formula
Next
Next
Set xChangeRg = Nothing
Set xRg = Nothing
Set xDependRg = Nothing
Application.EnableEvents = True
End Sub Dans les cas où il est préférable de stocker la valeur précédente en tant que Commentaire — utile pour une consultation rapide et des annotations — le code VBA suivant effectue cette opération automatiquement dès qu’une cellule de la colonne cible est modifiée :
Code VBA : Enregistrer la valeur précédente d’une cellule dans le commentaire
Dim xRg As Range
Dim xChangeRg As Range
Dim xDependRg As Range
Dim xDic As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Long
Dim xCell As Range
Dim xHeader As String
Dim xCommText As String
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
xHeader = "Previous value :"
For I = 0 To UBound(xDic.Keys)
Set xCell = Range(xDic.Keys(I))
If Not xCell.Comment Is Nothing Then xCell.Comment.Delete
With xCell
.AddComment
.Comment.Visible = False
.Comment.Text xHeader & vbCrLf & xDic.Items(I)
End With
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim I, J As Long
Dim xRgArea As Range
On Error GoTo Label1
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Set xDependRg = Target.Dependents
If xDependRg Is Nothing Then GoTo Label1
If Not xDependRg Is Nothing Then
Set xDependRg = Intersect(xDependRg, Range("C:C"))
End If
Label1:
Set xRg = Intersect(Target, Range("C:C"))
If (Not xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = Union(xRg, xDependRg)
ElseIf (xRg Is Nothing) And (Not xDependRg Is Nothing) Then
Set xChangeRg = xDependRg
ElseIf (Not xRg Is Nothing) And (xDependRg Is Nothing) Then
Set xChangeRg = xRg
Else
Application.EnableEvents = True
Exit Sub
End If
xDic.RemoveAll
For I = 1 To xChangeRg.Areas.Count
Set xRgArea = xChangeRg.Areas(I)
For J = 1 To xRgArea.Count
xDic.Add xRgArea(J).Address, xRgArea(J).Text
Next
Next
Set xChangeRg = Nothing
Set xRg = Nothing
Set xDependRg = Nothing
Application.EnableEvents = True
End Sub Remarques sur les paramètres :
- Le chiffre 7 dans
Cells(xCell.Row,7)correspond à la colonne G. Modifiez cette valeur si vous souhaitez enregistrer la valeur précédente dans une autre colonne. Range("C:C")définit la colonne dont les modifications seront suivies. Ajustez-la selon vos besoins, par exemple « D:D » pour la colonne D.
3. Pour activer la prise en charge des dictionnaires dans votre script, rendez-vous dans l’éditeur VBA via « Outils » > « Références... ». Lorsque la boîte de dialogue « Références – VBAProject » s’ouvre, cochez l’option « Microsoft Scripting Runtime », puis cliquez sur « OK », comme illustré :

4. Appuyez sur « Alt » + « Q » pour quitter l’éditeur VBA et revenir à votre feuille de calcul.
À partir de maintenant, chaque fois qu’une valeur de la colonne C est modifiée, Excel copiera automatiquement sa valeur précédente dans la colonne G ou l’ajoutera au commentaire de la cellule. Cela vous permet de suivre et de valider facilement les modifications, en garantissant que les données historiques restent accessibles pour examen, audit ou correction d’erreurs.
Exemple de résultat pour l’enregistrement des valeurs précédentes dans d’autres cellules :

Exemple de résultat pour l’enregistrement des valeurs précédentes dans les commentaires :

Conseils et dépannage :
- Si les macros VBA ne fonctionnent pas comme prévu, rendez-vous dans « Fichier » > « Options » > « Centre de gestion de la confidentialité » > « Paramètres des macros » et sélectionnez « Activer toutes les macros ».
- Vérifiez vos références de colonnes si les valeurs ne sont pas enregistrées à l’emplacement souhaité.
- Si les erreurs persistent, veillez à ce que la bibliothèque « Microsoft Scripting Runtime » soit bien activée, comme indiqué ci-dessus.
Microsoft 365 — Consultez les valeurs précédentes et mises à jour des cellules avec Afficher les modificationset Historique des versions
Dans Microsoft 365, vous pouvez auditer les modifications (savoir qui a changé quoi, quand, et consulter les valeurs avant/après) sans recourir à l’ancien suivi des modifications. Utilisez Afficher les modifications pour obtenir des détails au niveau des cellules, et Historique des versions pour accéder à des instantanés complets du fichier et effectuer des restaurations.
Conditions requises
- Classeur enregistré dans OneDrive ou SharePoint.
- Connecté avec un compte Microsoft 365 ; sauvegarde automatique activée. Activée.
- Format moderne ().xlsx) ; n’utilise pas le Classeur partagé (hérité).
Afficher les modifications (audit au niveau des cellules)
1. Ouvrez le classeur enregistré dans le cloud, puis accédez à Révision ▸ Afficher les modifications pour ouvrir le volet.
2. (Facultatif) Sélectionnez d’abord une feuille ou une plage afin de limiter les résultats.
3. Parcourez les entrées pour consulter l’auteur, l’horodatage et les valeurs ancienne → nouvelle ; cliquez sur une entrée pour accéder directement à la cellule.
Historique des versions (comparer et restaurer)
1. Accédez à Fichier ▸ Informations ▸ Historique des versions.
2. Ouvrez une version antérieure pour la comparer, copiez des cellules ou cliquez sur Restaurer pour annuler toutes les modifications du fichier.
- « Afficher les modifications » est grisée ?Enregistrez votre fichier dans OneDrive ou SharePoint, activez la sauvegarde automatique et convertissez-le depuis le format Mode de compatibilité ()Fichier ▸ Informations ▸ Convertir), puis vérifiez que l’option Classeur partagé (hérité) est bien désactivée. Si l’option reste indisponible sur le bureau, essayez Excel pour le web.
- Sécurité/verrous : La protection du classeur ou de la feuille, le chiffrement ou la gestion des droits relatifs à l’information (IRM) peuvent désactiver la fonction « Afficher les modifications ».
- Fichiers locaux : L’historique complet n’est pas conservé pour les fichiers purement locaux. Pour obtenir les meilleurs résultats, utilisez l’historique des versions via le cloud.
- Besoin d’inscrire les anciennes valeurs directement dans les cellules ?« Afficher les modifications » et l’historique des versions sont des outils d’audit. Pour enregistrer automatiquement la « valeur précédente » dans une colonne auxiliaire à chaque modification, utilisez un petit enregistreur VBA basé sur
Worksheet_Change.
Avantages
- Audit automatique indiquant qui a modifié quoi et quand, avec les valeurs avant et après — aucune macro requise.
- Multiplateforme (Windows, Mac, web) lorsqu’il est stocké dans OneDrive/SharePoint.
Inconvénients
- Nécessite un stockage dans le cloud avec sauvegarde automatique ; certains détails liés aux modifications temporaires sont limités.
- N’inscrit pas les valeurs précédentes dans les cellules ; recourez à VBA si nécessaire pour votre logique métier.
Meilleurs outils de productivité Office
Boostez vos compétences Excel avec Kutools pour Excel et découvrez une efficacité inégalée.Kutools pour Excel propose plus de 300 fonctionnalités avancées pour améliorer votre productivité et Gagner du temps.Cliquez ici pour obtenir la fonctionnalité dont vous avez le plus besoin...
Office Tab apporte une interface à onglets à Office et rend votre travail bien plus facile
- Activez l’édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
- Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
- Augmente votre productivité de 50 % et vous fait économiser des centaines de clics de souris chaque jour !
Tous les compléments Kutools. Un seul installateur
Kutools for Office regroupe les compléments pour Excel, Word, Outlook et PowerPoint, ainsi que Office Tab Pro, ce qui en fait le choix idéal pour les équipes travaillant à travers les applications Office.
- Suite tout-en-un— Compléments Excel, Word, Outlook et PowerPoint + Office Tab Pro
- Un seul installateur, une seule licence— installation en quelques minutes (compatible MSI)
- Fonctionne mieux ensemble— productivité optimisée dans toutes les applications Office
- Essai gratuit de 30 jours avec toutes les fonctionnalités— aucune inscription, aucune carte bancaire
- Meilleur rapport qualité-prix— économisez par rapport à l’achat de compléments individuels