Bonjour à tous,

- Le contexte : La fonction ci-dessous est intégrée dans une module Access et doit être compatible avec les outils office 2002 et 2013.
Elle est utilisé dans un 'publipostage' maison via un outil Access sur le document Word actif.

- Mon problème : quand NewValue = "", aucun remplacement n'est effectué, sauf si je remplace "" par un espace comme dans le 'test Gillou.
Mais au rendu final, c'est pas propre.
Y a t'il un moyen pour forcer le remplacement par une chaîne vide via cette fonction ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Sub ReplaceInWord(ByRef appword As Object, ByRef OldValue As String, ByRef NewValue As String, Optional Lngcolor As Long = 0)
        'remplace tous les occurences de OldValue par NewValue dans le document actif de appword :
 
    Debug.Print OldValue & " > " & NewValue
    Dim tmpRange As Word.Range
 
    For Each tmpRange In appword.ActiveDocument.StoryRanges
        With tmpRange.Find
            .Text = OldValue
            'test Gillou
            'If NewValue <> "" Then
                .Replacement.Text = NewValue
            'Else
            '    .Replacement.Text = " "
            'End If
            .Wrap = wdFindContinue
            .ClearFormatting
            .Replacement.ClearFormatting
            If Lngcolor <> 0 Then
                .Font.Color = Lngcolor
            End If
            .Replacement.Highlight = False
            .Forward = True
 
            .Execute Replace:=wdReplaceAll
        End With
    Next tmpRange
 
End Sub

Merci d'avance pour les infos