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.
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil


Puisque le préfixe de la discussion indique Office 365, pourtant ne pas en profier ?
Voir particulièrement ce chapitre
1696080182772.png
 

de_hanstrapp

XLDnaute Occasionnel
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.

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 le fil


Puisque le préfixe de la discussion indique Office 365, pourtant ne pas en profier ?
Voir particulièrement ce chapitre
Regarde la pièce jointe 1180082
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
  1. Sous Suivi des modifications, cliquez sur Survenues au cours des et dans la zone jours, tapez le nombre de jours d’historique des modifications que vous souhaitez conserver. Par défaut, Excel conserve l’historique des modifications pendant 30 jours et efface de façon permanente tout historique des modifications antérieur à ce nombre de jours. Pour conserver un historique pendant plus de 30 jours, entrez un nombre supérieur à 30.
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

Statistiques des forums

Discussions
315 102
Messages
2 116 224
Membres
112 690
dernier inscrit
noureddinee