Bonjour,
J'ai une macro dans mon fichier excel qui a pour but de copier des tableaux excel pour les coller dans word. Cela me permet de créer un rapport que j'exporte au format pdf avec pdf creator.
Jusqu'a aujourd'hui tout se passait bien, j'ai environ 10 tableaux qui se copient dans mon document word. J'utilise la méthode des signets pour désigner l'emplacement de mon tableau.
voici le code que j'utilise :
Dans ce rapport je dois rajouter 4 tableaux. Ils sont un peu plus large que les autres. J'ai utilisé le même code (cf ci dessus) pour les importer dans word. L'importation fonctionne mais "l'image" est rogné, il manque trois colonnes. Le format de la page lors de l'importation est en portrait. J'ai fais dérouler mon code pas à pas et le tableau est bien copier entièrement dans excel. Le problème vient donc du manque de place horizontalement. pastespecial ne colle que ce qu'il peut et "rogne le reste". Cela n'adapte pas l'image entièrement au format de page (ou alors je me trompe quelque part...). La solution est donc de passer en format paysage pour avoir une meilleur lisiblité du tableau. A ma grande surprise j'ai le même souci. L'image se colle comme si elle était sur un format portrait. La taille du tableau (ou de l'image tableau) collé est exactement la même que mes autres tableaux et elle est rogné
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 ' Boucle sur 6 autres tableaux ( Titre B et les 2 premier Tab titre C) '----------------------------------------------------------------------' For IndexSheet = indSheetCmd3 To indSheetCmd8 ' indSheetCmdX = constante contenant l'index d'une feuille ' Copie du tableau dans le presse papier Worksheets(IndexSheet).Range("B8:I40").Copy ' Méthode Pastespecial ; colle le tableau sur le bon Indexsignet .Bookmarks("Signet" & IndexSignet).Range.PasteSpecial Link:=False, DataType:=wdPasteMetafilePicture, _ Placement:=wdFloatOverText, DisplayAsIcon:=False ' Mise en forme du tableau dans word (centrer en autre) With .Shapes(IndexSignet) .LockAspectRatio = msoTrue .Left = wdShapeCenter .ZOrder msoBringInFrontOfText End With ' IndexSignet = IndexSignet + 1 Application.CutCopyMode = False Next IndexSheet
Je précise que c'est bien après avoir éxecuté pastespecial que cela se produit, le code de mise en forme (cf commentaire code) n'est pas la raison.
ce que j'aimerais obtenir :
1 - Que le tableau s'adapte au format paysage pour une meilleur lisiblité
2 - que l'ensemble du tableau soit collé.
j'ai trouvé ceci qui doit correspondre à mon problème (voir ce lien) :
Il ya donc cette méthode colapse mais j'avoue ne pas vraiment cerner comment la mettre en place, bref je suis un peu perdu...Inserts the contents of the Clipboard. Unlike with the Paste method, with PasteSpecial you can control the format of the pasted information and (optionally) establish a link to the source file (for example, a Microsoft Excel worksheet).
Note If you don't want to replace the contents of the specified range or selection, use the Collapse method before you use this method. When you use this method, the range or selection doesn't expand to include the contents of the Clipboard.
Si quelqu'un a une solution, voit pourquoi la méthode pastespecial réagi de cette facon, cela m'aiderai énormément car je suis bloqué...
Merci pour votre aide
Partager