Créer une macro pour transférer un tableau excel dans un document word déja crée

sgarnung

XLDnaute Nouveau
bonjour à tous;
Sur mon fichier Excel (feuil2), j'ai réussi à créer (merci au forum bien fourni) une macro qui permet de transférer un tableau (cellule B1:B15) sur mon document word déja crée mais j'ai deux pb:
1) la mise en page du tableau n'est pas géniale
2) Comment faire pour insérer le tableau entre deux textes par exemple.
Comme un exemple , vaut mieux qu'un long discours, vla les docs.

Merci pour votre aide
 

Pièces jointes

  • classeur_stef_mardilundijuilletsoir.xlsm
    148.5 KB · Affichages: 124
  • document.docx
    10 KB · Affichages: 94

Papou-net

XLDnaute Barbatruc
Re : Créer une macro pour transférer un tableau excel dans un document word déja crée

Bonsoir sgarnung,

Le plus simple est de créer un signet dans ton fichier Word, pour insérer ton tableau à son emplacement.

C'est ce que j'ai fait sur la copie de ton fichier en pièce jointe. J'ai nommé ce signet "TableauExcel".

Ensuite, tu sélectionnes ce signet avec ta macro Excel avant de coller la copie du tableau :

Code:
Sub Excel_Word()
 
Dim oWdApp As Object 'Word.Application
 Dim oWdDoc As Object 'Word.Document
 
'Lancer une instance Word
 Set oWdApp = CreateObject("Word.Application")
 
'Ouvrir un nouveau document
 Set oWdDoc = oWdApp.Documents.Open("C:\Users\calystef\Desktop\document.docx")
 
'Rendre Word visible
 oWdApp.Visible = True
 oWdApp.Selection.GoTo What:=wdGoToBookmark, Name:="TableauExcel"
 
'Copier une plage depuis Excel
 ActiveSheet.Range("B1:b15").Copy
 
'Coller la plage dans Word
 oWdApp.Selection.Paste
 
'Annuler le mode couper/copier
 Application.CutCopyMode = False
 
End Sub
Je n'ai pas testé car je n'ai pas voulu modifier le chemin d'accès dans ta macro. Je te laisse donc le soin de vérifier.

Espérant t'avoir aidé.

Cordialement.
 

Pièces jointes

  • Copie de document.docx
    13.8 KB · Affichages: 122

sgarnung

XLDnaute Nouveau
Re : Créer une macro pour transférer un tableau excel dans un document word déja crée

merci pour ton astuce du signet, j'avais complétement zappé.

J'ai testé mais une fenêtre VBA s'ouvre en disant que le signet n'existe pas (erreur d'éxécution 5101)!! et pourant à priori le chemin est bon, tout comme le nom. Si tu as une idée, je suis preneur.
Merci
 

Papou-net

XLDnaute Barbatruc
Re : Créer une macro pour transférer un tableau excel dans un document word déja crée

Bonsoir sgarnung,

As-tu testé sur le fichier que je t'ai transmis ?

Sous Word, menu Insertion, rubrique Liens du ruban et clic sur Signet : tu devrais voir apparaître une fenêtre identique à la copie d'écran ci-jointe. En cliquant sur Atteindre, le curseur devrait se positionner entre les lignes Texte 1 et Texte 2.

Si tu ne vois pas "TableauExcel" dans la fenêtre, c'est qu'un problème est survenu dans l'envoi.

Cordialement.
 

Pièces jointes

  • CopieEcran.jpg
    CopieEcran.jpg
    27.6 KB · Affichages: 201

MichD

XLDnaute Impliqué
Re : Créer une macro pour transférer un tableau excel dans un document word déja crée

Bonjour,

Une autre approche :
(Désolé pour quelques phrases en anglais...)


You must add a reference to your projectVBA
"Microsoft Word xx.x Objects Librairy"

a way of doing :

VB:
Sub test()
Dim Rg As Range
Dim Wd As Word.Application
Dim Dc As Document, C As Column
Dim T As Table, P As Row
Dim A As Integer, B As Integer
Dim Bb As Border

'Defined range to copy
With Worksheets("Sheets1")
    Set Rg = .Range("A1:D5")
End With

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Open(Chemin & "\" & NomFichier.docx")

Dc.Selection.GoTo What:=wdGoToBookmark, Name:="TableauExcel"
Set T = Dc.Tables.Add(Range:=Dc.Range, _
        NumRows:=Rg.Rows.Count, _
        NumColumns:=Rg.Columns.Count)

For A = 1 To Rg.Rows.Count
    For B = 1 To Rg.Columns.Count
        T.Cell(A, B).Range = Rg(A, B)
    Next
Next

'To apply borders if necessary
With T
    For Each C In .Range.Columns
        C.Borders(wdBorderHorizontal).Visible = True
     Next
     For Each P In .Range.Rows
        P.Borders(wdBorderVertical).Visible = True
    Next
    For A = -4 To -1
        .Range.Borders(A) = True
    Next
End With

End Sub
 

Discussions similaires

Réponses
15
Affichages
665
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 720
Messages
2 081 889
Membres
101 831
dernier inscrit
gillec