code vba enregistrement des modifications

jeba14

XLDnaute Nouveau
Bonjour,
je viens d'utilisé le code ci-après pour voir les changements effectuer sur une feuille excel.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "Espion" Then
Application.EnableEvents = False
ValSaisie = Target
Application.Undo
temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
Sheets("espion").Cells(temp, 1) = Sh.Name
Sheets("espion").Cells(temp, 2) = Target.Address
Sheets("espion").Cells(temp, 3) = Now
Sheets("espion").Cells(temp, 4) = Target
Sheets("espion").Cells(temp, 5) = ValSaisie
Sheets("espion").Cells(temp, 6) = Environ("username")
Application.EnableEvents = True
End If
End Sub


Ce code fonctionne bien mais je ne peut pas changer les valeurs. Quand j'enlève application.undo, cela marche bien mais il me marque la valeur rentrée deux fois au lieu de me rentré l'ancienne et la nouvelle. Comment remedier au problème?
 
C

Compte Supprimé 979

Guest
Re : code vba enregistrement des modifications

Bonsoir jeba14

Pour moi il faut simplement faire
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Sh.Name <> "Espion" Then
    Application.EnableEvents = False
    ValSaisie = Target
    ' Application.Undo
    temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
    Sheets("espion").Cells(temp, 1) = Sh.Name
    Sheets("espion").Cells(temp, 2) = Target.Address
    Sheets("espion").Cells(temp, 3) = Now
    Sheets("espion").Cells(temp, 4) = Target
    Sheets("espion").Cells(temp, 5) = ValSaisie
    Sheets("espion").Cells(temp, 6) = Environ("username")
    Application.EnableEvents = True
  End If
End Sub

A+
 
Dernière modification par un modérateur:

jeba14

XLDnaute Nouveau
Re : code vba enregistrement des modifications

Bonjour,

merci pour cette réponse mais cela ne fonctionne pas. Quand je rentre votre code je n'ai que le nouveau paramètre qui apparait alors que souhaite voir l'ancien et le nouveau dans deux cellules distinct, chose qui marche quand on mais le application.undo mais qui empêche la modif.

cordialement
 
C

Compte Supprimé 979

Guest
Re : code vba enregistrement des modifications

Re,

Désolé, je n'avais pas tout saisi l'idée, il faut annuler l'annulation :eek:;) à la fin de l'inscription des données
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Sh.Name <> "Espion" Then
    Application.EnableEvents = False
    ValSaisie = Target
    Application.Undo  ' annuler la modification
    temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
    Sheets("espion").Cells(temp, 1) = Sh.Name
    Sheets("espion").Cells(temp, 2) = Target.Address
    Sheets("espion").Cells(temp, 3) = Now
    Sheets("espion").Cells(temp, 4) = Target
    Sheets("espion").Cells(temp, 5) = ValSaisie
    Sheets("espion").Cells(temp, 6) = Environ("username")
    Application.Undo  ' Annuler l'annulation ;)
    Application.EnableEvents = True
  End If
End Sub

A+
 

Discussions similaires

Réponses
2
Affichages
493

Statistiques des forums

Discussions
312 108
Messages
2 085 369
Membres
102 875
dernier inscrit
Jimbo2374