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