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:
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