XL 2019 Ajouter la date de modif pour chacune des feuilles d'un classeur

Sod2

XLDnaute Nouveau
Bonjour,

Je souhaite ajouter la date et le nom de la personne ayant effectué des modifs sur une feuille excel. ( dès qu'il change une valeur sur la feuille par exemple)
je souhaite que cela se fasse pour chacune des feuille.( En mettant un code pour chaque feuille si il le faut) => si on modifie la feuille 1 cela ne change que la date de la feuille 1 pareil pour la 2 etc...

J'avais un truc comme ça mais cela ne marche pas

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Sheets("Feuil1").Range("G4") = Now
Sheets("Feuil1").Range("G5") = Environ("username")
ThisWorkbook.Save
End Sub

Je vous remercie.
 
Solution
Bonjour à toutes & à tous, bonjour @Sod2
Tu n'étais pas loin, essaie ce code avec une feuille réservée pour l'enregistrement des modifications :
Enrichi (BBcode):
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

     Select Case Sh.Name
          Case "Feuil1": Lgn = 3
          Case "Feuil2": Lgn = 4
          Case "Feuil3": Lgn = 5
          Case "Feuil4": Lgn = 6
          Case "Feuil5": Lgn = 7
          Case Else: Exit Sub
     End Select
   
     Application.EnableEvents = False
     With Me.Worksheets("Enregistrements")
          .Cells(Lgn, 2) = Now
          .Cells(Lgn, 3) = Environ("username")
          .Cells(Lgn, 4) = Target.Address
          If Target.CountLarge = 1 Then
               .Cells(Lgn, 5) =...

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonjour à toutes & à tous, bonjour @Sod2
Tu n'étais pas loin, essaie ce code avec une feuille réservée pour l'enregistrement des modifications :
Enrichi (BBcode):
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

     Select Case Sh.Name
          Case "Feuil1": Lgn = 3
          Case "Feuil2": Lgn = 4
          Case "Feuil3": Lgn = 5
          Case "Feuil4": Lgn = 6
          Case "Feuil5": Lgn = 7
          Case Else: Exit Sub
     End Select
   
     Application.EnableEvents = False
     With Me.Worksheets("Enregistrements")
          .Cells(Lgn, 2) = Now
          .Cells(Lgn, 3) = Environ("username")
          .Cells(Lgn, 4) = Target.Address
          If Target.CountLarge = 1 Then
               .Cells(Lgn, 5) = Target.Formula2Local
          Else
               .Cells(Lgn, 5) = "#Valeurs multiples"
          End If
     End With
     Application.EnableEvents = True
   
End Sub
On enregistre le dernier changement de chaque feuille, exceptée la feuille "Enregistrement", dans cette dernière.

Sinon, si tu as une zone réservée dans chaque feuille, par exemple "A2 : D2", tu peux essayer ça :
Enrichi (BBcode):
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
     With Sh
         .[A2] = Now
         .[B2] = Environ("username")
         .[C2] = Target.Address
         If Target.CountLarge = 1 Then
               [D2]= Target.Formula2Local
         Else
               [D2] = "#Valeurs multiples"
         End If
     End With
     Application.EnableEvents = True
End Sub
Si tu préfères voir les formules sous forme de texte mets la cellule D2 au format texte

Voir mon exemple avec feuille d'enregistrement en pièce jointe.

Amicalement
Alain
 

Pièces jointes

  • Espion.xlsm
    22.5 KB · Affichages: 3

Discussions similaires

Réponses
7
Affichages
367

Statistiques des forums

Discussions
312 294
Messages
2 086 920
Membres
103 404
dernier inscrit
sultan87