Je fais une fusion de champs "maisons" à partir d'un projet VB dans un
document Word.
Je fais un cherche et remplace à l'aide du code suivant (dans une classe,
myWordApplication est bien sur instancié)
Public Sub Remplacer_texte(Texte_à_remplacer As Variant,
Texte_de_remplacement As Variant)
With myWordApplication //
instancié à l'init de la classe
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = Texte_à_remplacer
.Replacement.Text = Texte_de_remplacement
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
.Selection.Find.Execute Replace:=wdReplaceAll
End With
End Sub
Cela fonctionne impeccable !
Seulement, si j'ai du texte dans une Zone de texte, il ne me le remplace
pas.
Ce qui est extraordinaire, c'est que quand on le fait directement dans Word,
il remplace aussi le texte dans les zones de texte.
J'ai fait une macro pour voir comment il faisait, et il génère exactement le
même code que ci-dessous, à la lettre près !!!!
Cela m'ennuie énormément car je suis déjà à la bourre sur ce projet.
J'étudie toute proposition !!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Guy Moncomble
Bonjour à tous, dans le message <3f65d936$0$27015$,
| Bonjour à tous, | | Je fais une fusion de champs "maisons" à partir d'un projet VB dans un | document Word. | Seulement, si j'ai du texte dans une Zone de texte, il ne me le | remplace pas.
Remplace ta macro par celle-ci : Public Sub Remplacer_texte(Texte_à_remplacer As String, Texte_de_remplacement As String) Dim ZoneDeTexte With myWordApplication '// instancié à l'init de la classe .Selection.Find.ClearFormatting .Selection.Find.Replacement.ClearFormatting With .Selection.Find .Text = Texte_à_remplacer .Replacement.Text = Texte_de_remplacement End With .Selection.Find.Execute Replace:=wdReplaceAll For Each ZoneDeTexte In .ActiveDocument.Shapes ZoneDeTexte.Select .Selection.Find.Execute Replace:=wdReplaceAll Next ZoneDeTexte End With End Sub -- A+
GMO MVP Word
Laissées à elles-mêmes, les choses tendent à aller de pire en pire. Se faire aider ne fait qu'accélérer le processus.
Edward A. Murphy, Jr.
Bonjour à tous,
dans le message <3f65d936$0$27015$626a54ce@news.free.fr>,
| Bonjour à tous,
|
| Je fais une fusion de champs "maisons" à partir d'un projet VB dans un
| document Word.
| Seulement, si j'ai du texte dans une Zone de texte, il ne me le
| remplace pas.
Remplace ta macro par celle-ci :
Public Sub Remplacer_texte(Texte_à_remplacer As String,
Texte_de_remplacement As String)
Dim ZoneDeTexte
With myWordApplication '// instancié à l'init de la classe
.Selection.Find.ClearFormatting
.Selection.Find.Replacement.ClearFormatting
With .Selection.Find
.Text = Texte_à_remplacer
.Replacement.Text = Texte_de_remplacement
End With
.Selection.Find.Execute Replace:=wdReplaceAll
For Each ZoneDeTexte In .ActiveDocument.Shapes
ZoneDeTexte.Select
.Selection.Find.Execute Replace:=wdReplaceAll
Next ZoneDeTexte
End With
End Sub
--
A+
GMO MVP Word
Laissées à elles-mêmes, les choses tendent à aller de pire en pire. Se
faire aider ne fait qu'accélérer le processus.
Bonjour à tous, dans le message <3f65d936$0$27015$,
| Bonjour à tous, | | Je fais une fusion de champs "maisons" à partir d'un projet VB dans un | document Word. | Seulement, si j'ai du texte dans une Zone de texte, il ne me le | remplace pas.
Remplace ta macro par celle-ci : Public Sub Remplacer_texte(Texte_à_remplacer As String, Texte_de_remplacement As String) Dim ZoneDeTexte With myWordApplication '// instancié à l'init de la classe .Selection.Find.ClearFormatting .Selection.Find.Replacement.ClearFormatting With .Selection.Find .Text = Texte_à_remplacer .Replacement.Text = Texte_de_remplacement End With .Selection.Find.Execute Replace:=wdReplaceAll For Each ZoneDeTexte In .ActiveDocument.Shapes ZoneDeTexte.Select .Selection.Find.Execute Replace:=wdReplaceAll Next ZoneDeTexte End With End Sub -- A+
GMO MVP Word
Laissées à elles-mêmes, les choses tendent à aller de pire en pire. Se faire aider ne fait qu'accélérer le processus.