code vba enregistrement des modifications

  • Initiateur de la discussion Initiateur de la discussion jeba14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jeba14

Guest
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?
 
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:
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
 
Re : code vba enregistrement des modifications

Re,

Désolé, je n'avais pas tout saisi l'idée, il faut annuler l'annulation 😱😉 à 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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
3
Affichages
922
Réponses
3
Affichages
643
Réponses
4
Affichages
521
Réponses
2
Affichages
504
Réponses
32
Affichages
2 K
Retour