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 SubJe 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.9Mais 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.
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…
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 !