Optimisation d'un programme et copiage de macro d'un module vers un autre.
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 ! :lol:
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:
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é !