Word - Adapter la largeur d'un objet collé issu d'Excel

Bonjour à tous !

Dans le but de progresser sur une macro d'export Excel sur Word, je cherche à avancer petit à petit.

Au stade où j'en suis j'arrive à exporter les bons éléments !

(Je créer d'abord des plages nommées selon la mise en page prévu sur excel, puis je copie-colle avec liaison ces plages nommées sur Word)

Voici le code actuel :

Function exist(feuille As String, nom As String) As Boolean
exist = False
On Error Resume Next
    x = Sheets(feuille).Range(nom).Address
    If Err.Number = 0 Then exist = True
On Error GoTo 0
End Function

Sub export_excel_to_word()

    Dim obj As Object
    Dim newObj As Object
    Dim sh As Worksheet
    Dim myFile

    Set obj = CreateObject("Word.Application")
    obj.Visible = True
    Set newObj = obj.Documents.Add

' newObj.PageSetup.LeftMargin = CentimetersToPoints(1)
' newObj.PageSetup.RightMargin = CentimetersToPoints(1)

For n = 1 To 3
    If exist("En_tête", "page_" & Format(n, "00")) Then
     ThisWorkbook.Worksheets("En_tête").Range("page_" & Format(n, "00")).Copy
        With obj.Selection
        .PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
        Placement:=wdInLine, DisplayAsIcon:=False
        .TypeParagraph
        .InsertBreak Type:=7
        End With
'Selection.InlineShapes(1).LockAspectRatio = msoTrue
'Selection.InlineShapes(1).Width = 498.9
    End If
Next

For n = 1 To 15
    If exist("Descriptif", "page_" & Format(n, "00")) Then
     ThisWorkbook.Worksheets("Descriptif").Range("page_" & Format(n, "00")).Copy
        With obj.Selection
        .PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
        Placement:=wdInLine, DisplayAsIcon:=False
        .TypeParagraph
        .InsertBreak Type:=7
        End With
    End If
Next

For n = 1 To 5
    If exist("Carac_tech", "page_" & Format(n, "00")) Then
     ThisWorkbook.Worksheets("Carac_tech").Range("page_" & Format(n, "00")).Copy
        With obj.Selection
        .PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
        Placement:=wdInLine, DisplayAsIcon:=False
        .TypeParagraph
        .InsertBreak Type:=7
        End With
    End If
Next

   Application.CutCopyMode = False

    myFile = Replace(ActiveWorkbook.Name, "xlsm", "docx")   'remplacer "docx" par l'extension qui convient, si nécessaire
    newObj.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & myFile

    MsgBox "Export vers Word terminé", vbInformation + vbOKOnly, "Export vers Word"

    obj.Activate
    Set obj = Nothing
    Set newObj = Nothing

End Sub

Je souhaiterais maintenant régler la largeur de mes exportations

Il faudrait que mes objets collés fasse la même largeur que la largeur de ma page Word. (Ca peut se faire en copiant "l'entre-marge" actuel ou en indiquant directement la largeur en valeur)

Je souhaite modifier la largeur parce que la largeur de ma source ne change pas, contrairement à sa longueur.

Donc en gardant les proportions et en adaptant la largeur, on tombe juste.

Avec l'enregistreur de macro Word j'obtiens des lignes intéressantes :

Selection.InlineShapes(1).LockAspectRatio = msoTrue
Selection.InlineShapes(1).Width = 498.9

Mais qui évidemment ne fonctionne pas si je l'insère dans ma macro

Je précise que j'ai peu d'aptitude à la création de macro, j'arrive juste à modifier/adapter des bouts de code existants.

20test-xl-wd-1-4.xlsm (832.46 Ko)

Bonjour @Anthony47,

Puis-je te demander s'il tu fais d'autres traitements dans Word ou bien si c'est juste pour imprimer ? Parce que si c'est juste pour imprimer, il n'y a pas besoin de tout ça, tu sélectionnes les 3 onglets, après avoirs correctement ajusté les formats d'impression de chacune des pages séparément, et tu les imprimes dans un PDF…

9test.pdf (926.68 Ko)

Eh oui, j'ai un retraitement à faire

Mais c'est bon, j'ai trouvé l'association de macro qui me permettent de faire ce dont j'ai besoin.

Merci !

Rechercher des sujets similaires à "word adapter largeur objet colle issu"