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:

  1. Affichez l’éditeur VBA en appuyant sur Alt + F11.

  2. Choisissez UserForm dans le menu Insertion. Un formulaire utilisateur vierge s’affiche dans l’éditeur.

  3. À l’aide de la boîte à outils, placez un contrôle Label dans le formulaire, près du côté gauche du formulaire.

  4. Dans les propriétés du contrôle Label nouvellement placé, modifiez la propriété Caption sur «Auteur» (sans les guillemets).

  5. À 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.

  6. Dans les propriétés du contrôle ComboBox, modifiez la propriété Name en «cboAuthor» (sans les guillemets).

  7. À 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.

  8. Dans les propriétés du contrôle CommandButton, modifiez la propriété Name en «cmdFindNext» (sans les guillemets).

  9. Dans les propriétés du contrôle CommandButton, modifiez la propriété Caption sur «Rechercher» (sans les guillemets).

  10. À 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.

  1. Dans les propriétés du contrôle CommandButton, remplacez la propriété Name par «cmdExit» (sans les guillemets).

  2. Dans les propriétés du contrôle CommandButton, modifiez la propriété Caption sur «Quitter» (sans les guillemets).

  3. 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.