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 :

Copier tableau excels vers document word existant [XL-2019]


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
    industrie
    Inscrit en
    Janvier 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 16
    Par défaut Copier tableau excels vers document word existant
    Bonjour, je cherche à copier 3 tableaux excel vers un document word existant, je cherche à editer le document word en ajoutant mes tableaux en fin de page mais j'ai l'impression que j'ecrase a chaque fois le fichier word... merci d'avance pour votre aide.

    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
    Sub Export_word()
    Dim monFichier As String
    Dim WordApp As Object, WordDoc As Object
     
        monFichier = ActiveWorkbook.path & "\" & "PROGRAMME DE TRAVAIL"
     
        On Error Resume Next
     
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = True
     
        Set WordDoc = WordApp.Documents.Open("PROGRAMME DE TRAVAIL.docx")
     
        With WordApp.Selection
            Sheets("LISTE").Range("A1:P45").Copy
            .Paste
            .TypeParagraph ' saut d'une ligne a la fin du tableau
     
     
            Sheets("GENERAL").Range("B1:Z160").Copy
            .Paste
            .TypeParagraph ' saut d'une ligne a la fin du tableau
     
            Sheets("PREPARATION").Range("A2:M46").Copy
            .Paste
            .TypeParagraph ' saut d'une ligne a la fin du tableau
     
        End With
     
        Application.CutCopyMode = False
        WordDoc.Save monFichier
     
        MsgBox "Copie Effectuée!"
     
        Set WordDoc = Nothing
        Set WordApp = Nothing
     
     
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kookyzzz Voir le message
    Bonjour,

    Il faut lui dire d'aller à la fin du document avec EnKey.

    Nb : Avant de travailler en late binding comme vous le faites, en phase de développement il vaut mieux référencer Word pour avoir accès aux propriétés et méthodes en tapant un . juste derrière une variable objet ou une instruction.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Sub Export_word2()
     
    Dim MonFichier As String
    Dim WordApp As Object, WordDoc As Object
    'Dim WordApp As Word.Application, WordDoc As Word.Document
    Dim I As Integer, NbTables As Integer
     
     
        MonFichier = ActiveWorkbook.Path & "\" & "PROGRAMME DE TRAVAIL\PROGRAMME DE TRAVAIL.docx" ' A adapter
     
        On Error Resume Next
     
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = True
     
        Set WordDoc = WordApp.Documents.Open(MonFichier)
     
        NbTables = WordDoc.Tables.Count
     
        Sheets("LISTE").Range("A1:P45").Copy
        With WordApp.Selection
             .EndKey unit:=6 'wdStory
             .Paste
             .TypeParagraph ' saut d'une ligne a la fin du tableau
        End With
     
        Sheets("GENERAL").Range("B1:Z160").Copy
        With WordApp.Selection
             .EndKey unit:=6 'wdStory
             .Paste
             .TypeParagraph ' saut d'une ligne a la fin du tableau
        End With
     
        Sheets("PREPARATION").Range("A2:M46").Copy
        With WordApp.Selection
             .EndKey unit:=6 'wdStory
             .Paste
             .TypeParagraph ' saut d'une ligne a la fin du tableau
        End With
     
        Application.CutCopyMode = False
     
        With WordDoc
            For I = NbTables + 1 To NbTables + 3
                .Tables(I).PreferredWidth = 0
            Next I
            .Save
     
           ' .Close savechanges:=True
        End With
     
       ' WordApp.Quit
     
        MsgBox "Copie Effectuée!"
     
        Set WordDoc = Nothing
        Set WordApp = Nothing
     
     
    End Sub

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour compléter la réponse d'Eric que je salue au passage, il est possible de développer en toute transparence en Early Binding et mettre en production en Late Binding grâce à la compilation conditionnelle
    Lire mon billet à ce sujet La compilation conditionnelle ou comment développer en EarlyBinding et distribuer en late binding
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre averti
    Homme Profil pro
    industrie
    Inscrit en
    Janvier 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 16
    Par défaut
    Merci, Eric KERGRESSE pour ta solution tu m'a sauvé d'une bonne crise de nerf et merci Philippe Tulliez pour ton tuto .

    J'aurai une autre question, indirectement en rapport avec ma question précédente. Le but final du transfert des tableaux vers Word, était de convertir le document Word en .html, je le fais manuellement en faisant un 'enregistrer sous' -> PROGRAMME DE TRAVAIL.html. J'ai essayé, malheureusement sans succès, en faisant un enregistrement de macro, de convertir via VBA directement le document. Existe-il une méthode simple pour convertir un .docx en .html?

    voici le code que j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WordDoc.SaveAs2 Filename:="PROGRAMME DE TRAVAIL.htm", FileFormat:= _
            wdFormatHTML, LockComments:=False, Password:="", AddToRecentFiles:=True, _
            WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
             SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
            False, CompatibilityMode:=0

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kookyzzz Voir le message
    A tester :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    Sub Export_word3()
     
    Dim MonFichier As String, MonFichierHtml As String
    Dim WordApp As Object, WordDoc As Object
    'Dim WordApp As Word.Application, WordDoc As Word.Document
    Dim I As Integer, NbTables As Integer
     
     
        MonFichier = ActiveWorkbook.Path & "\" & "PROGRAMME DE TRAVAIL\PROGRAMME DE TRAVAIL.docx" ' A adapter
        MonFichierHtml = ActiveWorkbook.Path & "\HTML\PROGRAMME DE TRAVAIL.htm"
        On Error Resume Next
     
        Set WordApp = CreateObject("Word.Application")
        WordApp.Visible = True
     
        Set WordDoc = WordApp.Documents.Open(MonFichier)
     
        NbTables = WordDoc.Tables.Count
     
        Sheets("LISTE").Range("A1:P45").Copy
        With WordApp.Selection
             .EndKey unit:=6 'wdStory
             .Paste
             .TypeParagraph ' saut d'une ligne a la fin du tableau
        End With
     
        Sheets("GENERAL").Range("B1:Z160").Copy
        With WordApp.Selection
             .EndKey unit:=6 'wdStory
             .Paste
             .TypeParagraph ' saut d'une ligne a la fin du tableau
        End With
     
        Sheets("PREPARATION").Range("A2:M46").Copy
        With WordApp.Selection
             .EndKey unit:=6 'wdStory
             .Paste
             .TypeParagraph ' saut d'une ligne a la fin du tableau
        End With
     
        Application.CutCopyMode = False
     
        With WordDoc
            For I = NbTables + 1 To NbTables + 3
                .Tables(I).PreferredWidth = 0
            Next I
            .Save
     
           ' .Close savechanges:=True
     
     
     
                .SaveAs2 Filename:=MonFichierHtml, FileFormat:= _
                    wdFormatHTML, LockComments:=False, Password:="", AddToRecentFiles:=True, _
                    WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
                     SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
                    False, CompatibilityMode:=0
               WordApp.ActiveWindow.View.Type = wdWebView
     
    End With
     
       ' WordApp.Quit
     
        MsgBox "Copie Effectuée!"
     
        Set WordDoc = Nothing
        Set WordApp = Nothing
     
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    industrie
    Inscrit en
    Janvier 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 16
    Par défaut
    Encore merci pour ton aide ERIC, j'ai testé mais le fichier .htm n'est pas lisible sur un navigateur, il n'y a que des ligne de caractères spéciaux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Macro Copier/Coller données Excel vers document Word avec Signets
    Par Julien91080 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2013, 12h28
  2. Copier un tableau excel vers du word
    Par Colbix dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2010, 08h49
  3. [WD-2007] Dimension tableau Excel dans document Word
    Par jphcrutzen dans le forum VBA Word
    Réponses: 0
    Dernier message: 10/12/2009, 12h14
  4. Feuille Excel vers document Word.
    Par lecail65 dans le forum Excel
    Réponses: 2
    Dernier message: 26/03/2009, 14h05
  5. Tableau excel et document Word
    Par Zimzimut dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/06/2007, 14h40

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