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 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 :
		Code:
	
	
	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. 😕
 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		