Bonjour,

J'ai une difficulté avec une macro excel de génération d'un tableau dans Word.

J'ai pré-positionné un signet dans mon document word pour positionner mon tableau

celui ci est constitué de 2 colonnes extraites d'excel.

ces colonnes peuvent être de taille variable et sont par ailleurs filtrées pour l'extraction, mais ce n'est pas ici l'objet du problème.

Je n'arrive pas à reconstituer mon tableau dans word à partir de 2 colonnes distinctes, et j'aimerais autant que possible rendre le fonctionnement dynamique (pouvoir créer mon tableau à partir de 3 colonnes par exemple).

voici le code que j'ai écrit jusqu'à maintenant, j'ai ciblé la partie du code qui nous intéresse et supprimé les déclarations et créations de doc word


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
'PArray(0) contient le nom de ma feuille et Parray(1) l'espace des données sous la forme A2:A5,E2:E5,C2:C5, 
'la colonne A1:A5 contient les données à filtrer, et je cherche à créer un tableau avec la colonne E2:E5 et C2:C5
 
Dim doc As Word.Document
Set InputDataForReport = Worksheets(PArray(0)).Range(PArray(1))
                With InputDataForReport
 
                    'mon critère de filtrage est ici "AddedBM(Index)"
                    .Areas(1).Columns(1).AutoFilter Field:=1, Criteria1:=AddedBM(Index)
 
                    'Mon idée est ici de créer un tableau avec ma 2éme colonne, puis d'y ajouter devant ma première colonne
                    'J'ai aussi essayé de faire une union des range qui m'intéressent pour les copier, mais le résultat est incorrect, j'affiche dans word le tableau C2:E5...
                    .Areas(2).SpecialCells(xlCellTypeVisible).Copy
                    'on se positionne ici au niveau du signet
                    With doc.Bookmarks(ChapCell.Offset(0, 2).Value & Index).Range
                        .Select
                        .PasteSpecial Link:=False, _
                                  Placement:=wdInLine, _
                                  DisplayAsIcon:=False                               
                        .Tables(1).AutoFitBehavior wdAutoFitWindow
                    End With
 
                    'jusqu'ici tout va bien, c'est pour ajouter les autres colonnes que ça se gâte
                    For i = 3 To .Areas.Count
                        Set wdColumn = doc.Bookmarks(ChapCell.Offset(0, 2).Value & Index).Range.Tables(1).Columns.Add(1)
                        wdColumn.Select
 
                        'Cette commande ne génère pas un objet "range" constitué de la première colonne du coup testrng n'a pas les méthodes associées
                        Set testrng = doc.Selection.SetRange(Start:=Selection.Start, End:=Selection.End)
                        .Areas(i).SpecialCells(xlCellTypeVisible).Copy
                        With testrng
                            .Select
                            .PasteSpecial Link:=False, _ 'erreur
                                    Placement:=wdInLine, _
                                    DisplayAsIcon:=False
                                    'DataType:=wdPasteMetafilePicture,
                                    .Tables(1).AutoFitBehavior wdAutoFitWindow
                            End With
 
                    Next i
                End With

Merci d'avance pour vos réponses