Word - Souligner automatiquement des noms contenus dans 1 liste

Résolu/Fermé
mib_valentine Messages postés 25 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 1 mai 2013 - Modifié par mib_valentine le 22/04/2013 à 21:09
mib_valentine Messages postés 25 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 1 mai 2013 - 23 avril 2013 à 17:48
Bonjour à tous,

Je travaille sous word 2010 et j'ai une longue bibliographie faisant intervenir de nombreux auteurs. Le fichier se nomme "PUBLICATIONS.DOCX".

J'ai, dans un autre fichier Word, une liste de noms. Le fichier se nomme "CHERCHEURS.DOCX"

J'aurais souhaité qu'à chaque fois que l'application rencontre dans PUBLICATIONS.DOCX un des noms présents dans le fichier CHERCHEURS.DOCX, elle souligne ce nom.

Je pensais qu'il était possible de faire cela avec une fonctionnalité telle que la table des matières ou encore l'index, mais je ne parviens à rien...

Est-ce que quelqu'un sait s'il est possible de faire cela de façon automatique?

Merci pour votre aide éventuelle.

Frédérique

A voir également:

2 réponses

mib_valentine Messages postés 25 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 1 mai 2013
22 avril 2013 à 22:21
Bon, j'ai trouvé une solution via une macro. Reste à savoir comment faire avec une liste extérieure (les noms) :
Dim varNom(4) As String
varNom(0) = "Dupont"
varNom(1) = "Durand"
varNom(2) = "Viileneuve"
varNom(3) = "Cazeneuve"
varNom(4) = "Bonnet"
i = 0
While i < 5
auteur = varNom(i)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Underline = wdUnderlineSingle
With Selection.Find
.Text = auteur
.Replacement.Text = auteur
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
i = i + 1
Wend

End Sub
0
mib_valentine Messages postés 25 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 1 mai 2013
23 avril 2013 à 17:48
Ai trouvé une macro provenant du module EndNote pour Word :

Sub AuteursASouligner()
Dim oDocSource As Document, oDocCible As Document
Dim oTbl As Table
Dim oRow As Row
Dim oDlg As FileDialog
Set oDlg = Application.FileDialog(msoFileDialogFilePicker)
With oDlg
.AllowMultiSelect = False
.Title = "Document contenant la liste des noms des chercheurs sous forme de tableau"
.Show
End With
Set oDocSource = Documents.Open(oDlg.SelectedItems(1))
With oDlg
.AllowMultiSelect = False
.Title = "Document des publications dans lequel souligner les auteurs"
.Show
End With
Set oDocCible = Documents.Open(oDlg.SelectedItems(1))
Set oTbl = oDocSource.Tables(1)
For Each oRow In oTbl.Rows
oDocCible.Select

auteur = NetText(oRow.Cells(1).Range.Text) 'utilisation de notre fonction
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Underline = wdUnderlineSingle

With Selection.Find

.Text = auteur
.Replacement.Text = auteur
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False

Selection.Find.Execute Replace:=wdReplaceAll
End With

Next oRow
Set oDlg = Nothing
Set oTbl = Nothing
Set oDocSource = Nothing

End Sub


Function NetText(stTemp As String) As String
NetText = Left(stTemp, Len(stTemp) - 2)
End Function
0