OVH Cloud OVH Cloud

Problème de vb/vba

2 réponses
Avatar
Carl
Bonjour à tous,

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 !!

merci d'avance
Carl

2 réponses

Avatar
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.
Avatar
Carl
merci beaucoup pour la réponse,
ca marche