Note: The other languages of the website are Google-translated. Back to English
English English

Comment suivre les modifications sans partager le classeur?

Normalement, lorsque vous appliquez la fonctionnalité Suivi des modifications dans Excel, le classeur sera partagé en même temps, ce sera ennuyeux car certaines des fonctionnalités d'Excel seront désactivées. Comment pouvez-vous suivre les modifications sans partager le classeur? Ici, je vais vous recommander un code VBA.

Suivre les modifications sans partager le classeur avec le code VBA


flèche bleue bulle droite Convertir le texte en tableau dans Outlook

Il n'y a aucun moyen direct pour vous de résoudre ce problème, mais vous pouvez appliquer un code VBA flexible pour le résoudre, procédez comme suit:

1. Cliquez avec le bouton droit sur l'onglet de la feuille dont vous souhaitez suivre les cellules modifiées, puis choisissez Voir le code dans le menu contextuel, dans le popped out Microsoft Visual Basic pour applications fenêtre, veuillez copier et coller le code suivant dans l'espace vide Module:

Code VBA: suivez les modifications sans partager le classeur:

Private Sub Worksheet_Change(ByVal Target As Range)
  'Updateby Extendoffice
    Const xRg As String = "A1:Z1000"
    Dim strOld As String
    Dim strNew As String
    Dim strCmt As String
    Dim xLen As Long
    With Target(1)
        If Intersect(.Cells, Range(xRg)) Is Nothing Then Exit Sub
        strNew = .Text
        Application.EnableEvents = False
        Application.Undo
        strOld = .Text
        .Value = strNew
        Application.EnableEvents = True
        strCmt = "Edit: " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
        Application.UserName & Chr(10) & "Previous Text :- " & strOld
        If Target(1).Comment Is Nothing Then
            .AddComment
        Else
            xLen = Len(.Comment.Shape.TextFrame.Characters.Text)
        End If
        With .Comment.Shape.TextFrame
            .AutoSize = True
            .Characters(Start:=xLen + 1).Insert IIf(xLen, vbLf, "") & strCmt
        End With
    End With
End Sub

doc suivre le changement sans partage 1

Notes: Dans le code ci-dessus, A1: Z1000 est la plage de données dont vous souhaitez suivre les modifications.

2. Ensuite, enregistrez et fermez cette fenêtre de code, maintenant, lorsque vous modifiez les valeurs dans les cellules de la plage spécifiée que vous avez définie dans le code, les cellules seront suivies et le classeur n'est pas partagé. Voir la capture d'écran:

doc suivre le changement sans partage 2


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (14)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Bon travail. Malheureusement, il y a quelques problèmes avec votre code. - Il ajoutera un commentaire même sur la première entrée de la cellule. Comment puis-je faire en sorte qu'il suive les modifications de la deuxième entrée et non de la première ? - Une fois que j'ai entré une valeur dans une cellule, je ne peux pas faire "Annuler". - Cela ne fonctionne pas avec les tableaux. Essayez d'utiliser sur une table puis essayez d'ajouter ou de supprimer un raw et le code plantera. J'aimerais vraiment avoir les connaissances nécessaires pour que le code fonctionne comme je le souhaite, comme décrit ci-dessus.
Ce commentaire a été minimisé par le modérateur sur le site
J'ai le même problème. Les boutons "Annuler" et "Rétablir" ne fonctionnent plus. Existe-t-il une solution à ça?
Ce commentaire a été minimisé par le modérateur sur le site
J'ai essayé d'utiliser ce code VBA dans ma feuille Excel. Mais ça m'a donné des erreurs. Je ne sais pas d'où cette macro doit être appelée et quel est l'argument de la fonction que vous avez fournie lorsqu'elle est appelée.
Ce commentaire a été minimisé par le modérateur sur le site
Existe-t-il un moyen d'enregistrer les modifications pour tous les onglets d'un classeur et d'enregistrer les modifications dans une nouvelle feuille de calcul ? CELA serait génial ... et je ne trouve aucune information sur Internet avec ce type de processus de suivi.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, jfjoyner,Pour modifier ce code pour toutes les feuilles et enregistrer les modifications de suivi sur une autre feuille, veuillez utiliser le code ci-dessous :Remarque : Veuillez mettre ce code dans le module ThisWorkbook.Option explicite
Estomper mStrRgAddress en tant que chaîne
Dim mStrRgValue en tant que chaîne

Private Sub Workbook_SheetSelectionChange (ByVal Sh As Object, ByVal Target As Range)
Const xRg As String = "A1:Z1000"
Const xSheetName As String = "Record sheet" 'La feuille sur laquelle vous souhaitez mettre les changements de piste, veuillez changer le nom de la feuille pour le vôtre.
Dim strOld As String
Dim strNouveau en tant que chaîne
Dim strCmt As String
Dim xLen As Long
Dim xSheet en tant que feuille de calcul
Dim xRgCell As Range
Dim xRgCell2 As Range
On Error Resume Next
Définir xSheet = Application.Sheets.Item(xSheetName)
Si mStrRgAddress <> "" Alors
Définir xRgCell = Plage (mStrRgAddress)
Si xRgCell.Text <> mStrRgValue Alors
strCmt = mStrRgAddress & " : " & Format$(Maintenant, "jj Mmm AAAA hh:nn:ss") & " par " & _
Application.UserName & Chr(10) & "Texte précédent :- " & mStrRgValue
Définir xRgCell2 = xSheet.Range("a1048576").End(xlUp)
Si xRgCell2.AddressLocal = xSheet.Range("A1").AddressLocal Alors
Si xRgCell2.Value <> "" Alors
Définir xRgCell2 = xRgCell2.Offset(1, 0)
Si fin
autre
Définir xRgCell2 = xRgCell2.Offset(1, 0)
Si fin
xRgCell2.Value = strCmt
Si fin
Si fin
Si xSheet.Name = Sh.Name, puis quittez Sub
mStrRgValue = Cible.Texte
mStrRgAddress = Target.AddressLocal(False, False, , True)
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Merci, c'est super, mais je n'arrive pas à le faire fonctionner. Je suppose qu'il s'exécute automatiquement, ce qui signifie qu'il n'est pas nécessaire de cliquer sur "Exécuter" ? J'ai renommé une feuille de calcul en indiquant {--TRACK_CHANGES--} pour suivre les instructions que vous avez laissées en vert. Pour l'instant, il n'enregistre rien. Merci.
Ce commentaire a été minimisé par le modérateur sur le site
Merci encore, skyyang.J'ai également remarqué que lorsque j'ai collé ceci dans le module de ce classeur, ma grande feuille de calcul a commencé à calculer en continu et ne s'arrêtait pas. Je ne connais rien à la programmation VBA, mais j'ai trouvé cette discussion sur le même sujet. Cela pourrait expliquer pourquoi le calcul se poursuit sans fin. https://www.mrexcel.com/board/threads/continuous-calculation-wont-stop.1179541/page-6#posts 
Le problème sur ce site Web était :Mais une fois que le problème de calcul continu commence, il persiste. Appuyer sur la touche Esc interrompt le calcul, mais il recommence à nouveau à moins que je ne passe à Manual Calc. Le mode de calcul manuel fonctionne correctement jusqu'à ce que j'exécute l'une des macros, qui se termine ensuite par la réactivation d'AutoCalc... J'ai parcouru chaque feuille de calcul du modèle et exécuté la vérification des erreurs en vain.
Leur conclusion était : C'est vrai : une fois que vous faites référence à un objet de formulaire ou à sa propriété (frmBudget.startupposition = 3) - l'objet est alors chargé jusqu'à ce que vous le déchargez ou réinitialisiez votre projet (Perte d'état - À ce stade, TOUTES les variables sont réinitialisées et toutes les valeurs perdues)
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour jfjoyner3, comment allez-vous. Comme vous pouvez le voir dans les deux captures d'écran, j'ai changé la "feuille d'enregistrement" en "feuille2" dans le code VBA. 
Ensuite, je suis retourné au classeur Excel. Après avoir apporté quelques modifications à la feuille sheet1, toutes ces modifications sont enregistrées dans la feuille sheet2.
En ce qui concerne le problème de calcul continu, pourriez-vous nous envoyer les captures d'écran ou la vidéo de votre problème ? Nous pouvons donc parfaitement comprendre ce qui se passe ici. Merci! 
Cordialement, Mandy
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup!
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour jfjoyner3, vous êtes les bienvenus. Après avoir enregistré la feuille de calcul avec le code VBA de la macro, la macro démarre automatiquement chaque fois que vous ouvrez la feuille de calcul. Pas besoin de le démarrer manuellement. Pour toute question, n'hésitez pas à nous contacter. Bonne journée ! Cordialement, Mandy   
Ce commentaire a été minimisé par le modérateur sur le site
MandyZhou, merci. Cette macro démarre-t-elle automatiquement lorsque j'ouvre la feuille de calcul ? Ou dois-je le démarrer manuellement ? 
Le problème de calcul continu est lié à une autre application. 
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour jfjoyner3, Tout d'abord, après avoir copié notre code VBA dans le module ThisWorkbook, le code s'exécute automatiquement. Deuxièmement, notre code VBA fonctionne. Veuillez voir les deux captures d'écran que j'ai téléchargées dans ce commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Mandyzhou, Merci encore pour ces conseils détaillés. Je reçois une erreur de syntaxe et cela me pointe vers cette ligne:

Si mStrRgAddress <> "" Alors

Êtes-vous en mesure de guider pour modifier cela et supprimer l'erreur de syntaxe ?
Merci !
Ce commentaire a été minimisé par le modérateur sur le site
Cette MAcro capture-t-elle les modifications apportées aux valeurs de formule à chaque mise à jour de mon modèle de données ?
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés