Comment insérer automatiquement une date et un nom lorsqu'une ligne est modifiée

LADRAT Elizabeth 0 Points de réputation
2025-08-19T12:29:38.9733333+00:00

Je souhaite intégrer dans un tabler excel deux colonnes pour suivre les modifications de ce document partagé avec l'insertion automatique de la date et du nom de la personne ayant effectué la modification.

Je pense que je dois utiliser l'outil Développeur, mais j'aurais besoin d'un modèle de codage.

Merci pour votre aide

Microsoft 365 et Office | Excel | Pour le business | iOS
0 commentaires Aucun commentaire
{count} votes

4 réponses

Trier par : Le plus utile
  1. Tina L 7,205 Points de réputation Personnel externe Microsoft Modérateur
    2025-08-19T13:44:18.69+00:00

    Bonjour @LADRAT Elizabeth,

    Merci de votre participation au forum de questions-réponses !

    Voici les étapes à suivre pour que le code VBA fonctionne correctement et insère automatiquement la date/heure et le nom d'utilisateur lors de la modification d'une ligne dans Excel :

    1. Enregistrez le fichier localement sur votre PC.

    Évitez de l'enregistrer sur OneDrive ou SharePoint, car les macros pourraient ne pas fonctionner correctement.

    2. Utilisez le format de fichier approprié.

    Enregistrez le classeur au format Excel Macro-Enabled Workbook (.xlsm).

     Image de l’utilisateur

    3. Fermez et rouvrez le fichier.

    4. Ouvrez l'éditeur VBA.

    Appuyez sur Alt + F11 pour ouvrir l'éditeur Visual Basic pour Applications.

    5. Sélectionnez la feuille de calcul appropriée.

    Dans le panneau de gauche, double-cliquez sur la feuille à laquelle vous souhaitez appliquer l'automatisation (par exemple, Feuille1).

     Image de l’utilisateur

    Attention : comme je n’ai pas accès aux images en français, merci de vous référer aux captures d’écran en anglais à la place, car une traduction pourrait entraîner des malentendus dans les étapes.

    Collez ensuite ce code dans la fenêtre de code de la feuille :

    Private Sub Worksheet_Change(ByVal Target As Range) 

      Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Cell As Range
        Dim WatchColumn As Long
        WatchColumn = 1 ' Column A to monitor
     
        For Each Cell In Target
            If Cell.Column = WatchColumn Then
                Application.EnableEvents = False
                ' Insert current date/time in column B
                Cell.Offset(0, 1).Value = Now
                ' Insert Windows username in column C
                Cell.Offset(0, 2).Value = Environ("Username")
                Application.EnableEvents = True
            End If
        Next Cell
    End Sub
    

    Remarque :

    Ce code surveille la colonne A. Lorsqu'une cellule de la colonne A est modifiée, il insère automatiquement :

    • La date et l'heure actuelles dans la colonne B
    • Le nom d'utilisateur Windows dans la colonne C de la même ligne

    De plus, vous devez vous assurer que les macros sont activées dans Excel :

    Accédez à Fichier > Options > Centre de gestion de la confidentialité > Paramètres du Centre de gestion de la confidentialité > Paramètres des macros et sélectionnez « Activer toutes les macros ».


    Si la réponse vous est utile, cliquez sur « Accepter la réponse » et votez pour elle. Si vous avez d'autres questions concernant cette réponse, cliquez sur « Commenter ». 

    Remarque : Veuillez suivre les étapes décrites dans notre documentation pour activer les notifications par e-mail afin de recevoir la notification associée à ce fil de discussion. Modifier vos préférences Microsoft Q&A | Microsoft Learn 
    Image de l’utilisateur


  2. Nari Hawta 0 Points de réputation
    2025-08-21T08:24:01.6733333+00:00

    Bonjour,

    Oui, pour suivre automatiquement les modifications dans un fichier Excel partagé (nom de l'utilisateur + date de modification), vous pouvez utiliser le VBA via l'onglet Développeur.

    Voici un exemple de code VBA à placer dans le module ThisWorkbook de votre classeur Excel

    Étapes :

    Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.

    Double-cliquez sur ThisWorkbook.

    Collez ce code :

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Dim LastCol As Long
    
    Dim modifCell As Range
    
    On Error GoTo ExitSub
    
    ' Évitez les boucles infinies
    
    Application.EnableEvents = False
    
    ' Définir la colonne pour la date et l'utilisateur (par exemple, colonnes Z et AA)
    
    LastCol = Sh.Cells(1, Columns.Count).End(xlToLeft).Column
    
    ' Ajouter les infos en colonnes Z (26) et AA (27), à côté de la cellule modifiée
    
    For Each modifCell In Target
    
        If Not IsEmpty(modifCell.Value) Then
    
            Sh.Cells(modifCell.Row, 26).Value = Now ' Colonne Z : Date/heure
    
            Sh.Cells(modifCell.Row, 27).Value = Environ("Username") ' Colonne AA : Nom d'utilisateur
    
        End If
    
    Next modifCell
    

    ExitSub:

    Application.EnableEvents = True
    

    End Sub

    https://narihawta.com/us/article/best-phone-to-buy-for-2025

    Remarques :

    Ce système fonctionne mieux si le fichier est stocké sur OneDrive ou SharePoint, ou utilisé dans un environnement réseau, car les utilisateurs sont identifiés.

    • N’oubliez pas d’enregistrer le fichier en tant que classeur Excel avec macros (.xlsm).
    0 commentaires Aucun commentaire

  3. LADRAT Elizabeth 0 Points de réputation
    2025-08-21T08:29:05.07+00:00

    Bonjour,

    Merci beaucoup pour cette note explicative qui me semble très claire.

    Néanmoins je n'arrive pas à aboutir à un résultat.

    J'ai appliqué les différentes étapes et ai modifié les colonnes du code pour s'adapter à mon tableau.

    Est-ce correct ? Cf. Ci-dessous.

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Cell As Range
    
    Dim WatchColumn As Long
    
    WatchColumn = 1 ' Column A to monitor
    
    WatchColumn = 1 ' Column B to monitor
    
    WatchColumn = 1 ' Column C to monitor
    
    WatchColumn = 1 ' Column D to monitor
    
    WatchColumn = 1 ' Column E to monitor
    
    WatchColumn = 1 ' Column F to monitor
    
    WatchColumn = 1 ' Column G to monitor
    
    WatchColumn = 1 ' Column H to monitor
    
    WatchColumn = 1 ' Column I to monitor
    
    WatchColumn = 1 ' Column J to monitor
    
    WatchColumn = 1 ' Column K to monitor
    
    WatchColumn = 1 ' Column L to monitor
    
    WatchColumn = 1 ' Column M to monitor
    
    WatchColumn = 1 ' Column N to monitor
    
    WatchColumn = 1 ' Column O to monitor
    
    WatchColumn = 1 ' Column P to monitor
    
    
    
    For Each Cell In Target
    
        If Cell.Column = WatchColumn Then
    
            Application.EnableEvents = False
    
            ' Insert current date/time in column Q
    
            Cell.Offset(0, 1).Value = Now
    
            ' Insert Windows username in column R
    
            Cell.Offset(0, 2).Value = Environ("Username")
    
            Application.EnableEvents = True
    
        End If
    
    Next Cell
    

    End Sub

    Je ne peux joindre mon fichier complet, car l'interface refuse l'extension. xlsm !

    Merci encore pour votre aide,

    E. Ladrat

    0 commentaires Aucun commentaire

  4. LADRAT Elizabeth 0 Points de réputation
    2025-08-22T09:11:05.08+00:00

    Bonjour,

    J'ai essayé à nouveau avec la proposition de Nari, mais je dois louper quelque chose.

    Je vais essayer de traduire plus clairement mon besoin :

    Si le contenu d'une case A à P est modifié sur une ligne, je souhaite qu'en case Q de cette ligne la date de la modification soit inscrite automatiquement et en case R de cette ligne le nom de l'utilisateur soit inscrit automatiquement.

    Merci encore pour votre aide

    E. Ladrat

    0 commentaires Aucun commentaire

Votre réponse

Les réponses peuvent être marquées comme Réponses acceptées par l’auteur de la question, ce qui permet aux utilisateurs de connaître la réponse qui a résolu le problème de l’auteur.