Bonjour,

J'alimente des tableaux dans Excel et je les injecte dans un document Word à l'emplacement d'un signet préalablement créé.
Cela fonctionne, mais par contre, quand je veux réinjecter dans Word les tableaux modifiés, il les place devant les anciens au lieu de les effacer et de les remplacer.

Pouvez-vous m'aider pour effacer ces tableaux existant sur le doc Word .

Merci.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
Public chemin As String
Public reponse As Boolean
 
 
Public Function definirSignets()
 
 
'On définit les variables
Dim valeur As String
Dim objWord As Object
Dim signet As Object
Dim feuille_actuelle As Worksheet
 
 
reponse = False
 
Call creationOuModification
 
Application.ScreenUpdating = False 'note Nico : accelére les macro car n'affiche pas le rafraichissement de l'ecran.
chemin = ThisWorkbook.Path
 
 
'On donne des valeurs aux objets
Set feuille_actuelle = ThisWorkbook.Sheets("Généralités")
 
Set objWord = CreateObject("Word.Application")
'On donne des valeurs aux objets
 
 
'On affiche le document Word
objWord.Visible = True
'On affiche le document Word
 
 
'On ouvre le document Word situé à l'emplacement indiqué
 
If reponse = True Then
 
    objWord.Documents.Open (chemin & "\NEW MATRICE 2021 v.2.docm")
 
Else
    chemin = boiteDialogue(msoFileDialogFilePicker, "", "", "")                         ' On récupère le chemin du fichier de données
    objWord.Documents.Open (chemin)
 
End If
 
With objWord.ActiveDocument 'Mettre With devant objWord.ActiveDocument permet de ne pas le répéter pour les signets
 
 
'Défini l'en-tête du devis
    Set signet = .Bookmarks("Numero_Devis_Entete").Range 'Attribue le signet Numero_Devis à l'object signet
    signet.Text = feuille_actuelle.Range("D5").Value 'Attribue le texte de la cellule D5 de la feuille actuelle à l'objet signet
    .Bookmarks.Add Name:="Numero_Devis_Entete", Range:=signet 'Quand on modifie le texte d'un signet, celui-ci est écrasé. On doit le réinitialiser en l'ajoutant de nouveau.
 
    Set signet = .Bookmarks("Nom_Magasin_Entete").Range
    signet.Text = feuille_actuelle.Range("D8").Value
    .Bookmarks.Add Name:="Nom_Magasin_Entete", Range:=signet
 
    Set signet = .Bookmarks("Ville_Magasin_Entete").Range
    signet.Text = feuille_actuelle.Range("D11").Value
    .Bookmarks.Add Name:="Ville_Magasin_Entete", Range:=signet
'Défini l'en-tête du devis
 
'Défini la 1ère page du devis
    Set signet = .Bookmarks("Initial_Commercial").Range
    signet.Text = feuille_actuelle.Range("G22").Value
    .Bookmarks.Add Name:="Initial_Commercial", Range:=signet
 
    Set signet = .Bookmarks("Initial_BE").Range
    signet.Text = feuille_actuelle.Range("G23").Value
    .Bookmarks.Add Name:="Initial_BE", Range:=signet
 
    Set signet = .Bookmarks("Nom_Magasin").Range
    signet.Text = feuille_actuelle.Range("D8").Value
    .Bookmarks.Add Name:="Nom_Magasin", Range:=signet
 
    Set signet = .Bookmarks("Adresse_Magasin").Range
    signet.Text = feuille_actuelle.Range("D9").Value
    .Bookmarks.Add Name:="Adresse_Magasin", Range:=signet
 
    Set signet = .Bookmarks("Code_Postal_Magasin").Range
    signet.Text = feuille_actuelle.Range("D10").Value
    .Bookmarks.Add Name:="Code_Postal_Magasin", Range:=signet
 
    Set signet = .Bookmarks("Ville_Magasin").Range
    signet.Text = feuille_actuelle.Range("D11").Value
    .Bookmarks.Add Name:="Ville_Magasin", Range:=signet
 
    Set signet = .Bookmarks("Numero_Devis").Range
    signet.Text = feuille_actuelle.Range("D5").Value
    .Bookmarks.Add Name:="Numero_Devis", Range:=signet
 
    Set signet = .Bookmarks("Objet_Du_Devis").Range
    signet.Text = feuille_actuelle.Range("D14").Value
    .Bookmarks.Add Name:="Objet_Du_Devis", Range:=signet
 
    Set signet = .Bookmarks("Nom_Commercial").Range
    signet.Text = feuille_actuelle.Range("D22").Value
    .Bookmarks.Add Name:="Nom_Commercial", Range:=signet
 
    Set signet = .Bookmarks("Nom_BE").Range
    signet.Text = feuille_actuelle.Range("D23").Value
    .Bookmarks.Add Name:="Nom_BE", Range:=signet
 
    Set signet = .Bookmarks("Objet_Du_Devis").Range
    signet.Text = feuille_actuelle.Range("D14").Value
    .Bookmarks.Add Name:="Objet_Du_Devis", Range:=signet
'Défini la 1ère page du devis
 
'Défini l'adresse, le nom et la ville du magasin dans le 2ème page
    Set signet = .Bookmarks("Adresse_Magasin_Page2").Range
    signet.Text = feuille_actuelle.Range("D9").Value
    .Bookmarks.Add Name:="Adresse_Magasin_Page2", Range:=signet
 
    Set signet = .Bookmarks("Nom_Magasin_Page2").Range
    signet.Text = feuille_actuelle.Range("D8").Value
    .Bookmarks.Add Name:="Nom_Magasin_Page2", Range:=signet
 
    Set signet = .Bookmarks("Ville_Magasin_Page2").Range
    signet.Text = feuille_actuelle.Range("D11").Value
    .Bookmarks.Add Name:="Ville_Magasin_Page2", Range:=signet
'Défini l'adresse, le nom et la ville du magasin dans le 2ème page
 
 
Worksheets("bilans mise en pages").Activate
 
 Worksheets("bilans mise en pages").Range("C1:I34").Select
 Selection.Copy
 objWord.Selection.Goto what:=-1, Name:=("tableau1")
 'objWord.Selection.Find.ClearFormatting
 objWord.Selection.PasteAndFormat (0)
 Application.CutCopyMode = False
 
 Worksheets("bilans mise en pages").Range("K1:R35").Select
 Selection.Copy
 objWord.Selection.Goto what:=-1, Name:=("tableau2")
 objWord.Selection.PasteAndFormat (0)
 Application.CutCopyMode = False
 
 Worksheets("bilans mise en pages").Range("C36:I69").Select
 Selection.Copy
 objWord.Selection.Goto what:=-1, Name:=("tableau3")
 objWord.Selection.PasteAndFormat (0)
 Application.CutCopyMode = False
 
 Worksheets("bilans mise en pages").Range("K37:R62").Select
 Selection.Copy
 objWord.Selection.Goto what:=-1, Name:=("tableau4")
 objWord.Selection.PasteAndFormat (0)
 Application.CutCopyMode = False
 
 
 
 
End With
 
Set objWord = Nothing
 
Application.ScreenUpdating = True
 
 
End Function
 
Function boiteDialogue(formatBoiteDialogue As MsoFileDialogType, ByVal strTitre As String, _
ByVal strBouton As String, ByVal strRepertoire As String) As String
 
 
 
Dim fDialog As Office.FileDialog
Dim repertoire As String
Dim choixFichier As String
 
Application.DisplayAlerts = False
 
On Error Resume Next
                                                                                    ' Répertoire de l'application
If strRepertoire = "" Then repertoire = chemin & "\Data"
 
If strBouton = "" Then strBouton = "Sélectionner"                                   ' Titre du Bouton
If strTitre = "" Then strTitre = "Sélectionner le fichier de données"               ' Titre de la boite de dialogue
 
Set fDialog = Application.FileDialog(formatBoiteDialogue)                           ' Création d'une Boîte Dialogue
        fDialog.InitialView = msoFileDialogViewDetails                              ' Affichage des fichiers par détail
        fDialog.AllowMultiSelect = False                                            ' Multisélection non autorisée
        fDialog.Title = strTitre                                                    ' Titre personnalisé
        fDialog.ButtonName = strBouton                                              ' Libellé personnalisé du bouton
        fDialog.InitialFileName = repertoire                                        ' Répertoire par défaut
        fDialog.Filters.Clear                                                       ' Efface les filtres
 
 
If fDialog.Show = True Then                                                         ' S'il y a une sélection on la mémorise
    choixFichier = fDialog.SelectedItems(1)
    boiteDialogue = choixFichier
    boiteDeDialogueConfirmee = True
 
 
Else
    boiteDialogue = "": Exit Function
End If
End Function
 
Function creationOuModification()
 
If MsgBox("S'agit-il d'une création ?", vbYesNo, "Création ou modification ?") = vbYes Then
 
    reponse = True
 
Else
 
    reponse = False
 
End If
 
End Function