Rechercher-remplacer sur Word avec une liste Excel.
Universus
Messages postés
4
Statut
Membre
-
m@rina Messages postés 27465 Date d'inscription Statut Modérateur Dernière intervention -
m@rina Messages postés 27465 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je cherche à rechercher sur un document Word, les valeurs de chaque rangée dans la colonne A d'un fichier Excel, et remplacer les occurrences par leur valeur correspondante de la colonne B.
(Liste de + de 1000 rangées).
Précision (le but est de corriger / reformatter le document Word).
Comment faire?
Exemple :

Je cherche à rechercher sur un document Word, les valeurs de chaque rangée dans la colonne A d'un fichier Excel, et remplacer les occurrences par leur valeur correspondante de la colonne B.
(Liste de + de 1000 rangées).
Précision (le but est de corriger / reformatter le document Word).
Comment faire?
Exemple :

Configuration: Macintosh / Chrome 101.0.4951.64
3 réponses
-
Bonjour.
Cette gymnastique n'est pas possible (sauf peut-être avec une macro, mais j'en doute).
Recherche à faire entièrement dans des documents Word ou dans des classeurs Excel, et recopier les résultats obtenus. -
Bonjour
C'est possible, avec une macro. Mais ce sera beaucoup plus simple de faire un copier coller du tableau en question dans un doc Word.
Supposant que le document Word qui contient le tableau se nomme tablo.docx, voici une macro qui va faire les modifs dans le document actif.
ATTENTION ! la macro que je propose est faite pour Windows, pas pour Mac, et l'on sait que les macros sur Mac ne sont pas vraiment compatibles.
Donc mieux vaut quand même faire un test avant :
Sub universus()
'macro écrite par m@rina
Dim tablo, i
Dim cellule1 As Cell, cellule2 As Cell
Dim texte1 As Range, texte2 As Range
tablo = Documents("tablo.docx").Tables(1)
For i = 1 To tablo.Rows.Count
Set cellule1 = tablo.Tables(1).Cell(Row:=i, Column:=1)
Set texte1 = cellule1.Range
texte1.MoveEnd unit:=wdCharacter, Count:=-1
Set cellule2 = tablo.Tables(1).Cell(Row:=i, Column:=2)
Set texte2 = cellule2.Range
texte2.MoveEnd unit:=wdCharacter, Count:=-1
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Set myrange = ActiveDocument.Content
With myrange.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = texte1
.Replacement.Text = texte2
.Execute Replace:=wdReplaceAll ' peut être la raison
End With
Next i
End Sub
m@rina
-
-
uhm...
Le débogueur me surligne la lignetablo = Documents("tablo.docx").Tables(1)
J'imagine que j'ai fait une erreur avec le document Word du tableau ?
voici de quoi il a l'air :
et juste pour rire, voici le texte qui allait être corrigé!1!
Je suis 2 que : 3
C’est un test
(je testais en même temps si ça prendrait en considération les espaces " " et la commande de saut de ligne "\n")
-
-
Bonjour,
Cette ligne parle du premier tableau du document tablo.dotx qui doit être ouvert. Donc vérifier qu'il s'agit bien du premier tableau.
Important : la macro doit être lancée depuis le document à modifier qui doit, bien sûr, être ouvert également.
m@rina