Anthonymctm
XLDnaute Occasionnel
Bonjour à tous ! 😀
Dans le but de progresser sur ma 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 :
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 :
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. 😕
Dans le but de progresser sur ma 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 :
VB:
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 :
Code:
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. 😕