Bonjour à tous,
J'ai créé une macro sous Excel pour analyser les données d'un projet et en extraire l'état d'avancement mensuel.
Ma macro me fait ressortir, entre autre; 8 données que j'exporte dans un rapport créé sous Word en utilisant les signets.
Voici ma macro d'exportation:
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
 
Sub exportWord()
 
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim ANL As Worksheet
Set ANL = ThisWorkbook.Sheets("Analysis")
Dim i As Byte
 
Set WordApp = CreateObject("Word.Application") 'ouvre session word
Set WordDoc = WordApp.Documents.Open(ThisWorkbook.Path & "\Monthly Progress Report Gas Export.docx") 'ouvre document Word
WordApp.Visible = False 'word masqué pendant l'operation
For i = 1 To 8
'les signets du document Word sont nommés Signet1 , Signet2 , Signet3,...,Signet8
WordDoc.Bookmarks("OLE_LINK" & i).Range.Text = ANL.Cells(i + 2, 10).Text
Next i
 
WordApp.Visible = True 'affiche le document Word
 
Export_Diagram_Word
 
End Sub
Les données sont exportées comme je le souhaite.

Cependant, je voudrait savoir si il est possible de mettre à jour les données dans Word (effacer les données existantes et les remplacer par les nouvelles).
Sans réponses à ce post sur le forum VBA Excel, je me tourne vers vous.
J'ai pensé créer une macro sous Word pour effacer les données en passant par l'éditeur mais le résultat n'est pas convaincant.
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
Sub Effacer_données_Excel()
    Selection.GoTo What:=wdGoToBookmark, Name:="OLE_LINK1"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.GoTo What:=wdGoToBookmark, Name:="OLE_LINK2"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
End Sub
En effet la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
  Selection.Delete Unit:=wdCharacter, Count:=1
est répétée autant de fois qu'il y a de caractère à effacer, il doit être possible de palier à cela mais je ne sais pas comment faire, d'autant plus que le nombre de caractères peut varier.
Quelqu'un sur ce forum a-t-il une idée, une astuce ou un tutoriel à me conseiller?

Merci pour votre aide et votre collaboration
Eric