IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Optimisation d'un programme et copiage de macro d'un module vers un autre.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Par défaut 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 !

    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é !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Dev_noob Voir le message
    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... ?
    On commence par virer les Select et les Activate et on référence les documents avec des variables.

    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
    Sub boucle()
    Dim Sh As Worksheet
    Dim WB As Workbook
    Dim Dc As Word.Document
    Dim Rg As Word.Range
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Set Dc = GetObject("C:\CHEMIN\Fiches_sondages_Word.docx")
    Dc.Application.Visible = True
     
    For Each Sh In ThisWorkbook.Sheets
        Fin = Sh.UsedRange.SpecialCells(xlLastCell).Row
        Sh.Range("B2:J" & Fin).CopyPicture Appearance:=xlPrinter
        With Dc
            If .Bookmarks.Exists("Annexe") Then
                Set Rg = .Bookmarks("Annexe").Range
                Rg.PasteSpecial
                .ActiveWindow.Selection.EndKey Unit:=wdStory
                .ActiveWindow.Selection.InsertBreak Type:=wdPageBreak
            End If
        End With
    Next Sh
     
    WB.Application.ScreenUpdating = True
    WB.Application.DisplayAlerts = True
     
    Dc.Activate
     
    Set Sh = Nothing
    Set Dc = Nothing
    Set WB = Nothing
    End Sub
    Pour la partie Word (ce qui est à l'intérieur du With), je ne suis pas sûr (c'est pas trop ma partie).

Discussions similaires

  1. [XL-2007] Macro Transfert d'onglets vers d'autres fichiers déjà existants
    Par Jean.Boutin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/12/2017, 17h29
  2. [XL-2003] Changer Nom Boutton Macro et l'exporter Vers un autre Fichier Excel
    Par NONOSSONV dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/04/2015, 17h00
  3. [XL-2013] Macro extraction de données vers une autre feuille Excel
    Par ImBb2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/04/2015, 19h25
  4. [XL-2000] Modifier une macro qui copie/colle vers une autre feuille
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2010, 23h02
  5. Optimisation d'un programme d'échecs
    Par Erickann dans le forum x86 32-bits / 64-bits
    Réponses: 8
    Dernier message: 23/11/2005, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo