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:
Les données sont exportées comme je le souhaite.
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
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.
En effet la ligne
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 Subest 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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Selection.Delete Unit:=wdCharacter, Count:=1
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
Partager