Bonjour à tous,

En cherchant un peu partout, j'ai réussi à écrire une macro qui réalise des C/C en format image de tableaux qui diffèrent selon les onglets Excel vers un fichier Word temporaire et de manière ordonnée. Ma requête consiste à alléger et à optimiser le traitement de la macro pour que ce dernier soit le plus rapide. Étant donné mes capacités limitées, je fais appel à votre expertise !

Pour cela, je vous demande si vous n'auriez pas une écriture plus légère de cette macro, qui se révèle relativement maladroite, même si fonctionnelle... ?

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
 
Sub boucle()
Dim Sh As Integer
Dim Wd As Word.Application, Dc As Word.Document
Dim Chemin As String, Fichier As String
Dim FichierImage As String, Rg As Word.Range
 
Application.ScreenUpdating = False
Application.DisplayAlerts = False
 
Chemin = "C:\CHEMIN\Fiches_sondages_Word.docx"
Fichier = "Fiches_sondages_Word.docx"
 
Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Open("C:\CHEMIN\Fiches_sondages_Word.docx")
 
ThisWorkbook.Activate
Sheets("Fiche-sondage_S1").Select
 
For Sh = 1 To Sheets.Count
    ThisWorkbook.Activate
    Sheets(Sh).Activate
    Fin = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
    Range("B2:J" & Fin).CopyPicture Appearance:=xlPrinter
    Wd.Documents("Fiches_sondages_Word").Activate
With Dc
    If .Bookmarks.Exists("Annexe") Then
    Set Rg = .Bookmarks("Annexe").Range
    Wd.ActiveWindow.ActivePane.Selection.PasteSpecial
    Wd.ActiveWindow.Selection.EndKey Unit:=wdStory
    Wd.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak
    End If
End With
 
Next Sh
 
Wd.Documents("Fiches_sondages_Word").Activate
 
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Set Rg = Nothing
Set Dc = Nothing
Set Wd = Nothing
End Sub
J'ai une deuxième requête un peu plus simple :
Auriez-vous un code permettant de C/C cette macro vers un autre fichier Excel? C'est à dire transférer la macro d'un module Excel vers un autre module pour que ce dernier exécute la macro automatiquement ?

Je vous remercierai jamais assez pour toute la connaissance que vous m'avez déjà apporté !