Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Historique des modifications

de_hanstrapp

XLDnaute Occasionnel
Bonjour le forum,

J'ai crée dans un classeur une feuille (AA_Historique) qui permet d'obtenir un historique des modifications.
Avec le code ci-après je récupère un certin nombre d'informations. Ma question est comment je peux intégrer en colonne 6 la valeur de la cellule avant la modification.

Merci pour votre aide.

VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
If Sh.Name = AA_Historique.Name Or Sh.Name = "AA_Donnees" Then Exit Sub
With AA_Historique
    .Unprotect Password:=Wbk_Protect
    With .Range("A65536").End(xlUp)
        .Offset(1, 0).Value = Now()
        .Offset(1, 1).Value = Environ("computername")
        .Offset(1, 2).Value = Environ("username")
        .Offset(1, 3).Value = Sh.Name
        .Offset(1, 4).Value = Target.Address
[COLOR=rgb(184, 49, 47)]        .Offset(1, 5).Value = ???[/COLOR]
        .Offset(1, 6).Value = Target.Value
    End With
    .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=Wbk_Protect
End With
On Error GoTo 0
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Une idée possible, dans la feuille, rajoutez :
Code:
Public ValeurAuClic, AdresseAuClic
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    ValeurAuClic = Target
    AdresseAuClic = Target.Address
    ' Pour test
    Application.StatusBar = AdresseAuClic & " - " & ValeurAuClic
End Sub
Les variables AdresseAuClic et ValeurAuClic contiendront l'adresse et la donnée présentent dans la dernière cellule cliquée, donc avant sa modification.
Le Statusbar ( pour test ) recopie ces 2 variables bans la barre de status, à supprimer évidemment.
 

de_hanstrapp

XLDnaute Occasionnel

Bonjour Sylvanu,
Merci pour votre réponse mais je vous avoue que je ne comprends pas la manipulation que je dois effectuer...
 

de_hanstrapp

XLDnaute Occasionnel
Bonjour Staple1600,
Personnellement j'utilise office 365 mais ce n'est pas le cas de toutes les personnes qui utilisent le fichier d'où ma volonté de créer un historique.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Si le classeur ne contient pas de macros, l'ancienne option Revision permet justement d'indiquer le nombre de jours
En théorie doit fonctionner sur toutes versions d'Excel

Pour plus de détails
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour de_hanstrapp, Staple,
Si vous le voulez en VBA, voir PJ avec :
VB:
Sub Nettoyage() ' Supprime toute ligne antérieur à 15 jours.
Application.ScreenUpdating = False
With Sheets("JOURNAL")
    For L = .Cells(.Cells.Rows.Count, "B").End(xlUp).Row To 3 Step -1
        If Date - .Cells(L, "B") > 15 Then Rows(L).Delete Shift:=xlUp
    Next L
End With
End Sub
Un bouton de test dans la feuille Journal.
Vous pouvez l'appelez en fin de Workbook_SheetChange.
Il y a surement plus rapide, mais le nombre de lignes à nettoyer restera faible.
 

Pièces jointes

  • Exemple - Copie.xlsm
    19.8 KB · Affichages: 6

Discussions similaires

Réponses
12
Affichages
519
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…