Recherche de modifications par l’éditeur (Microsoft Word)
L’abonné Doris Bell a demandé s’il y avait un moyen, dans Word 2000, de localiser toutes les modifications apportées par un éditeur particulier dans un document pour lequel le suivi des modifications était activé. La réponse rapide, bien sûr, serait de passer à Word 2002, car cette fonctionnalité est disponible directement à partir de la barre d’outils Révision.
Word 97 et Word 2000, cependant, sont une histoire différente – là, vous avez uniquement la possibilité d’afficher ou de ne pas afficher toutes les modifications suivies. Si vous le souhaitez, vous pouvez résoudre le problème en créant des macros qui vous permettent de rechercher des modifications par un éditeur spécifique. Commencez par créer un formulaire utilisateur dans l’éditeur VBA, en suivant ces étapes générales:
-
Affichez l’éditeur VBA en appuyant sur Alt + F11.
-
Choisissez UserForm dans le menu Insertion. Un formulaire utilisateur vierge s’affiche dans l’éditeur.
-
À l’aide de la boîte à outils, placez un contrôle Label dans le formulaire, près du côté gauche du formulaire.
-
Dans les propriétés du contrôle Label nouvellement placé, modifiez la propriété Caption sur «Auteur» (sans les guillemets).
-
À l’aide de la boîte à outils, placez un contrôle ComboBox juste à droite de l’étiquette que vous avez placée à l’étape 3.
-
Dans les propriétés du contrôle ComboBox, modifiez la propriété Name en «cboAuthor» (sans les guillemets).
-
À l’aide de la boîte à outils, placez un contrôle CommandButton sur le formulaire. Cela peut être le long du bord inférieur du formulaire ou sur le bord droit; C’est comme tu veux.
-
Dans les propriétés du contrôle CommandButton, modifiez la propriété Name en «cmdFindNext» (sans les guillemets).
-
Dans les propriétés du contrôle CommandButton, modifiez la propriété Caption sur «Rechercher» (sans les guillemets).
-
À l’aide de la boîte à outils, placez un autre contrôle CommandButton sur le formulaire.
Cela doit être soit juste à droite de l’autre contrôle CommandButton, soit juste en dessous.
-
Dans les propriétés du contrôle CommandButton, remplacez la propriété Name par «cmdExit» (sans les guillemets).
-
Dans les propriétés du contrôle CommandButton, modifiez la propriété Caption sur «Quitter» (sans les guillemets).
-
Redimensionnez votre formulaire global pour l’apparence souhaitée.
Votre formulaire est maintenant complet et il ne vous reste plus qu’à ajouter le code de programmation qui profitera de ces contrôles. Assurez-vous de sélectionner le formulaire entier, puis appuyez sur F7 pour afficher la fenêtre Code. S’il y a déjà du code (VBA peut vous fournir du code par défaut), n’hésitez pas à le supprimer. Ensuite, placez le code suivant dans la fenêtre Code:
Private Sub UserForm1_Initialize() Dim oRevision As Revision Dim bExists As Boolean bExists = False ' Go to beginning of document Selection.HomeKey Unit:=wdStory ' Loop through revisions and add authors For Each oRevision In ActiveDocument.Revisions If Me.cboAuthor.ListCount > 0 Then For i = 1 To Me.cboAuthor.ListCount If Me.cboAuthor.List(i - 1) = oRevision.Author Then bExists = True End If Next i ' If it doesn't already exist, add the author to list If Not bExists Then Me.cboAuthor.AddItem oRevision.Author End If bExists = False Else ' Add first Author to the list Me.cboAuthor.AddItem oRevision.Author End If Next oRevision End Sub Private Sub cmdExit_Click() Unload Me End Sub Private Sub cmdFindNext_Click() Dim iStart As Integer Dim iEnd As Integer Dim myRange As Range Dim iRevisions As Integer Dim iResponse As Integer Dim bAuthorFound As Boolean ' Collapse the Selection so that we don't include selected text Selection.Collapse wdCollapseEnd Selection.MoveRight wdCharacter, 2 ' Get the Range start and end positions iStart = Selection.Range.Start iEnd = ActiveDocument.Content.End Set myRange = ActiveDocument.Range(Start:=iStart, End:=iEnd) ' Count total number of revisions within range iRevisions = myRange.Revisions.Count If iRevisions > 0 Then ' Loop through all revisions in the range ' selecting first one found For i = 1 To iRevisions If myRange.Revisions(i).Author = Me.cboAuthor.Text Then myRange.Revisions(i).Range.Select bAuthorFound = True Exit For Else bAuthorFound = False End If Next i End If If Not bAuthorFound Then ' Ask if they would like to start from the beginning iResponse = MsgBox("Search from beginning?", vbYesNo, "Find Author") If iResponse = vbYes Then ' Go to top of document Selection.HomeKey Unit:=wdStory cmdFindNext_Click Else ' Exit Unload Me End If End If End Sub
Lorsque vous exécutez ultérieurement votre nouveau formulaire utilisateur, un moyen de sélectionner des éditeurs et de rechercher la prochaine modification effectuée par cet éditeur vous est présenté. Cela vous permet de rechercher une modification à la fois, et non d’afficher toutes les modifications d’un éditeur particulier (comme vous pouvez le faire dans Word 2002).
Vous pouvez adopter une approche différente. Vous pouvez utiliser une macro pour « extraire » toutes les modifications effectuées dans un document et les organiser par éditeur dans un nouveau document. La macro suivante montre comment vous pouvez faire ce genre de chose. Le tableau résultant indique même le type de modification effectuée dans le document d’origine.
Option Explicit Private Sub ShowAuthorAndRevisions() Dim sRevision As String Dim oRev As Revision Dim oDoc As Document Dim oRng As Range For Each oRev In ActiveDocument.Revisions With oRev sRevision = sRevision & .Author & vbTab _ & .Type & vbTab & .Range.Text & vbCrLf End With Next oRev ' Open a new document Set oDoc = Documents.Add With oDoc .Range.InsertAfter sRevision ' Convert the revisions to a table .Range.ConvertToTable Separator:=wdSeparateByTabs With .Tables(1) ' Sort the table by the author (i.e., the first column) .Range.Sort ' Add a new row to the beginning of the table .Range.Rows.Add BeforeRow:=.Range.Rows(1) With .Rows(1) ' insert column descriptions .Cells(1).Range.Text = "Author" .Cells(2).Range.Text = "Revision Type" .Cells(3).Range.Text = "Revision" End With End With ' insert a paragraph mark above the table Selection.SplitTable ' Insert a legend to make reading the revision type easier .Range.InsertBefore "Revision Type Legend:" & vbCrLf & _ "No Revision = 0 " & vbCrLf & _ "Revision Insert = 1 " & vbCrLf & _ "Revision Delete = 2 " & vbCrLf & _ "Revision Property = 3 " & vbCrLf & _ "Revision Paragraph Number = 4 " & vbCrLf & _ "Revision Display Field = 5 " & vbCrLf & _ "Revision Reconcile = 6 " & vbCrLf & _ "Revision Conflict = 7 " & vbCrLf & _ "Revision Style = 8 " & vbCrLf & _ "Revision Replace = 9 " & vbCrLf End With End Sub
Pour chaque révision dans un document, cette macro trouvera l’auteur, le type et le texte de la révision (le cas échéant). La macro placera ensuite toutes les révisions dans une table, triera la table par le nom de l’auteur et insérera une petite légende décrivant chaque type de révision.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites WordTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / wordribbon-WordTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
WordTips est votre source pour une formation Microsoft Word rentable.
(Microsoft Word est le logiciel de traitement de texte le plus populaire au monde.) Cette astuce (1303) s’applique à Microsoft Word 97, 2000 et 2002.