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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
Bonjour Verdi33,
Regarde du côté de: Outils/Suivi des modifications
Cet outil réponds précisement à ce type de demande.
ChrisV
"verdi33" <ermam@free.fr> a écrit dans le message de news:
eegQh3j1FHA.3204@TK2MSFTNGP14.phx.gbl...
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
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
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
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
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
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
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
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
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
Je vais essayer ton code et voir si cela répond à ce que je souhaite
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
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