Macro VBA sur Excel pour remplir tableaux Word

cilouu

XLDnaute Nouveau
Bonjour à tous,

Je viens de m'inscrire sur le forum et je débute par la même occasion le VBA.
Une personne a réalisé une macro VBA qui permet à l'aide d'un fichier Excel et d'un document Word avec des tableaux, de remplir les tableaux de Word de manière automatique à partir des infos dans l'Excel. Cela permet de générer différentes fiches.
Je souhaite apporter quelques modification au document Word et à la macro Excel pour que le remplissage continue à fonctionner.
Ma première modification a été de fusionner 2 tableaux déjà présents dans le document Word, j'ai réussi en changeant la macro à la faire fonctionner.
Ensuite j'ai ajouté des lignes à mes tableaux et j'ai ajusté le remplissage, cela a aussi fonctionné.
Maintenant j'aimerais ajouter un nouveau tableau pour y insérer un graphique dans une des cases (graphique qui proviendrait du ficher Excel) et le résultats d'une cellule d'un tableau du fichier Excel. Et c'est là que ça se corse... En effet, en ajoutant un tableau, la macro me donne un message d'erreur. Je pense qu'il faut numéroter le tableau, j'ai inséré une légende dans le modèle Word mais ça ne fonctionne toujours pas. J'ai fait des recherches sur les index et les signets mais je m'y perds un peu ...
Auriez vous une solution ?
Merci d'avance de votre aide et bonne soirée !
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro VBA sur Excel pour remplir tableaux Word

Bonsoir cilouu et bienvenue sur XLD :)

C'est une demande bien compliquée que tu demade là. Non pas parce qu'on ne veux pas t'aider mais, ce n'est pas si simple de retouché un code qui n'est pas de nous. Ne pourrais-tu pas demander à la personne qui l'a fait, si il peut te redonner un coup de main?.
 

cilouu

XLDnaute Nouveau
Re : Macro VBA sur Excel pour remplir tableaux Word

Bonjour Lone Wolf,

Malheureusement non il m'est impossible de contacter la personne sinon c'est sur que c'est la première chose que j'aurais fait. En fait les tableaux sont appelés dans la macro par des numéro. Je m'explique, dans mon fichier Word, il y a 15 tableaux et ceux qui se remplissent automatiquement par la macro sont appelé par leur numéro de position. Ainsi le tableau qui se trouvait en dernière page du modèle Word, en le déplaçant, j'ai pu modifier la macro et le remplir à nouveau grâce à sa nouvelle position. Mais quand je fais insérer un tableau dans le modèle Word et que je copie la ligne de ma macro pour remplir le nouveau tableau ben là, il y a une erreur qui me dit que l'objet de la collection (5941) n'existe pas.

J'ai extrait la fonction du code qui remplit les tableaux, peut être cela vous aidera à y voir plus clair.
Merci encore !

Code:
Function CopyRangeToABC(TheWorkSheet As Worksheet, strRange As String, WordApp As Word.Application, WordEPD As Word.Document, tableIndex As Integer, startI As Integer, startJ As Integer, endI As Integer, endJ As Integer) As Boolean
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
    
    TheWorkSheet.Activate
      
    WordABC.Activate
    'WordABC.Tables(tableIndex).Select
    WordApp.Selection.SetRange Start:=WordABC.Tables(tableIndex).Cell(startI, startJ).Range.Start, End:=WordABC.Tables(tableIndex).Cell(endI, endJ).Range.End
    
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard

    TheWorkSheet.Range(strRange).Copy
    WordApp.Selection.Paste
    
    OpenClipboard 0
    EmptyClipboard
    CloseClipboard
End Function
 

cilouu

XLDnaute Nouveau
Re : Macro VBA sur Excel pour remplir tableaux Word

Bonjour Lone-Wolf,

Merci pour ta franchise! Je ne me vois pas jeter tout le code, vu qu'il fait les 3/4 du boulot. Cependant est il possible d'ajouter à mon code une fonction qui va créer un tableau à un endroit précis de mon document word et qui le remplit à partir de valeurs du tableau Excel ?
Si oui, pourriez vous m'aider à écrire cette fonction ?

Merci pour votre réponse !
 

Lone-wolf

XLDnaute Barbatruc
Re : Macro VBA sur Excel pour remplir tableaux Word

Re,

voici la macro pour copier le tableau, je te laisse faire les modifs nécessaires.


Code:
Sub CopyTabInWord()
Dim DocWord As Word.Document
Dim AppWord As Word.Application
Dim fichier As String

Set AppWord = New Word.Application
Application.DisplayAlerts = True
AppWord.Visible = True

'Chemin du doc dans le même dossier qu'Excel
fichier = ThisWorkbook.Path & "\Test.doc"
'sinon
'fichier = "C:\" & environ("username") & "\MesDocuments\Test.doc"

'Ouvre le document Word
Set DocWord = AppWord.Documents.Open(fichier, ReadOnly:=False)

'Copie les données Excel
ThisWorkbook.Worksheets("Feuil1").Range("A1").CurrentRegion.Copy

'Colle les données dans Word
DocWord.Range.Paste

'Ajustement automatique des colonnes
DocWord.Tables(1).AutoFitBehavior wdAutoFitWindow

'Supprime la sélection dans Excel
Application.CutCopyMode = False

'Enregistre les modifications
DocWord.Save

  'Ferme le document
'AppWord.Application.Quit
End Sub

Pour placer le tableau selon ton choix: PLACETABLEAU

Lis attentivement et essaie d'adapter.
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa