OVH Cloud OVH Cloud

Historisation des modifications

4 réponses
Avatar
verdi33
Bonjour à tous,

J'ai un fichier avec plusieurs onglets (Feuil1, Feuil2,...) et je
souheterais historiser sur un nouvel onglet toutes les modifications que
je fais sur l'onglet "Feuil2" (par exemple) c'est à dire qu'à chaque
fois que j'ouvre ce fichier et que j'effectue des modifications sur une
cellule quelconque de l'onglet "Feuil2", la nature de la modification
soit transcrite sur le nouvel onglet avec la date au moment où s'est
effectué cette modification.

Est ce possible ? Et si oui comment dois je m'y prendre ?(un début de
code VBA m'aiderais bien)

En espérant avoir été assez clair, merci d'avance pour votre future aide

Verdi33

4 réponses

Avatar
ChrisV
Bonjour Verdi33,

Regarde du côté de: Outils/Suivi des modifications
Cet outil réponds précisement à ce type de demande.


ChrisV


"verdi33" a écrit dans le message de news:

Bonjour à tous,

J'ai un fichier avec plusieurs onglets (Feuil1, Feuil2,...) et je
souheterais historiser sur un nouvel onglet toutes les modifications que
je fais sur l'onglet "Feuil2" (par exemple) c'est à dire qu'à chaque fois
que j'ouvre ce fichier et que j'effectue des modifications sur une cellule
quelconque de l'onglet "Feuil2", la nature de la modification soit
transcrite sur le nouvel onglet avec la date au moment où s'est effectué
cette modification.

Est ce possible ? Et si oui comment dois je m'y prendre ?(un début de code
VBA m'aiderais bien)

En espérant avoir été assez clair, merci d'avance pour votre future aide

Verdi33


Avatar
jb
Voilà un code qui historise les modifs d'une feuille dans une autre
nommée Espion.
Il faut écrire ce code dans l'événement Change de WorkSheet.


Private Sub Worksheet_Change(ByVal Target As Range)
temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
Sheets("espion").Cells(temp, 1) = Target.Address
Sheets("espion").Cells(temp, 2) = Now
Sheets("espion").Cells(temp, 3) = Target
End Sub

Cellule Date Contenu
$A$8 21/10/2005 16:36 Moresco
$B$8 21/10/2005 16:36 Compta
$C$8 21/10/2005 16:36 1234

JB
Avatar
jb
Autre solution. On historise dans le champ commentaire des cellules:

Nom Service Salaire
Dupont Compta 2 150,00 €
Durand Etudes 2 560,00 €
Milan Fabric 3 050,00 €

Sur l'exemple, on historise les modifs de salaire en colonne C:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 3 Then ' colonne 3 seulement
On Error Resume Next ' active la gestion
d'erreur
Err = 0
temp = Target.Comment.Text ' Commentaire existe
t-il?
If Err <> 0 Then Target.AddComment ' Création commentaire
Target.Comment.Text Text:=Target.Comment.Text & _
Target.Value & " Modifié par:" & NomUtil() & _
" Le " & Now & vbLf
Target.Comment.Visible = True
Target.Comment.Shape.Select
Selection.AutoSize = True
Target.Comment.Visible = False
On Error GoTo 0 ' désactive la gestion
d'erreurs
End If
Application.EnableEvents = True
End Sub

Function NomUtil()
Set temp = CreateObject("WScript.Network")
NomUtil = temp.UserName
End Function

JB
Avatar
verdi33
Voilà un code qui historise les modifs d'une feuille dans une autre
nommée Espion.
Il faut écrire ce code dans l'événement Change de WorkSheet.


Private Sub Worksheet_Change(ByVal Target As Range)
temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
Sheets("espion").Cells(temp, 1) = Target.Address
Sheets("espion").Cells(temp, 2) = Now
Sheets("espion").Cells(temp, 3) = Target
End Sub

Cellule Date Contenu
$A$8 21/10/2005 16:36 Moresco
$B$8 21/10/2005 16:36 Compta
$C$8 21/10/2005 16:36 1234

JB

Merci jb pour ta réponse

Je vais essayer ton code et voir si cela répond à ce que je souhaite

Verdi33