KutoolsforOffice — Une solution unique, cinq outils puissants.Faire plus avec moins d'efforts.Soldes de mars : 20 % de réduction

Comment mémoriser ou enregistrer la valeur précédente d’une cellule modifiée dans Excel ?

AuteurSiluvia Date de modification

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.


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é.

Capture d’écran d’un tableau Excel montrant la colonne cible pour enregistrer les valeurs précédentes des cellules

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 :

Capture d’écran illustrant l’option Afficher le code dans le menu contextuel de l’onglet de feuille Excel

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é :

Capture d’écran de la boîte de dialogue Références avec Microsoft Scripting Runtime sélectionné

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 :

Capture d’écran montrant les valeurs précédentes des cellules enregistrées dans une autre colonne dans Excel

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

Capture d’écran montrant les valeurs précédentes des cellules enregistrées sous forme de commentaires dans Excel

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

🤖Kutools IA Aide: Révolutionnez Analyse des données grâce à :Exécution intelligente   |  Générez du code|  Créez formules personnalisées  |  Analysez des données et générez des graphiques|  Appelez Fonctions améliorées
Fonctionnalités populaires:Rechercher, mettre en surbrillance ou Marquer les doublons   |  Supprimer les lignes vides   |  Combinez les colonnes ou cellules sans perdre de données   |   Arrondi sans utiliser de formule...
Super RECHERCHEV:RechercheValeurs avec critères multiples  |  RechercheValeurs avec valeurs multiples  |   RechercheValeurs dans plusieurs feuilles   |   Correspondance floue....
Liste déroulante avancée:Créez rapidement une liste déroulante   |  Liste déroulante dépendante   |  Liste déroulante à sélection multiple....
Gestionnaire de colonnes:Ajouter un nombre précis de colonnes|Déplacer des colonnes|Basculer la visibilité des colonnes masquées|Comparer des plages et des colonnes...
Fonctionnalités vedettes:Mise au point de la grille   |  Vue de conception   |Barre de formule améliorée   | Gestionnaire de classeurs et de feuilles   |  Bibliothèque de ressources(Texte automatique)|  Sélecteur de date   |  Consolider les feuilles de calcul  |  Chiffrer/Déchiffrer les cellules   | Envoyer des e-mails par liste   |  Super Filtre   |   Filtre spécial(Filtrer les cellules avec une police en gras/italique/barré...) ...
… et bien plus encore… et plus encore:(,)Supprimer des caractères spécifiques, ...)|   50+Typesde graphiques(, ...)|   40+ Formules pratiques(Calculer l'âge en fonction de la date de naissance, ...)|   19 Outils d’insertion(,Insérer une image depuis un chemin , ...)|   de conversion (Convertir en mots,Conversion de devises, ...)|Fusionner et scinder   (Fusion avancée des lignes,Diviser les cellules , ...)|, ...)   |
Utilisez Kutools dans la langue de votre choix – disponible en anglais, espagnol, allemand, français, chinois et 40+ autres langues !

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.

ExcelWordOutlookTabsPowerPoint
  • 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