Anthonymctm
XLDnaute Occasionnel
Bonjour à tous !
Bon, j'ai plusieurs points à régler sur ma macro dont je présente le besoin global ici : https://www.excel-downloads.com/threads/vba-export-excel-word.20034683/
Pour pouvoir avancer à petit pas, je vais essayer de régler ici un des points à régler.
Dans mon fichier Excel, j'ai une macro me permettant de générer des plages nommées qui vont bien dans 3 onglets.
Les plages se nomment page_01, page_02, etc. Il y a donc 3 plages nommées "page_01" (une par onglet).
A chaque fois que j'active cette macro, les plages se réinitialisent, et parfois, par exemple, je n'ai pas de page_02 sur le deuxième onglet.
Ce qui fait que mon autre macro qui fait référence à cette plage bug puisque cette plage n'existe pas. Il faut donc que je puisse tester en amont si la plage existe.
Voici le code actuel :
Bon, j'ai plusieurs points à régler sur ma macro dont je présente le besoin global ici : https://www.excel-downloads.com/threads/vba-export-excel-word.20034683/
Pour pouvoir avancer à petit pas, je vais essayer de régler ici un des points à régler.
Dans mon fichier Excel, j'ai une macro me permettant de générer des plages nommées qui vont bien dans 3 onglets.
Les plages se nomment page_01, page_02, etc. Il y a donc 3 plages nommées "page_01" (une par onglet).
A chaque fois que j'active cette macro, les plages se réinitialisent, et parfois, par exemple, je n'ai pas de page_02 sur le deuxième onglet.
Ce qui fait que mon autre macro qui fait référence à cette plage bug puisque cette plage n'existe pas. Il faut donc que je puisse tester en amont si la plage existe.
Voici le code actuel :
VB:
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)
On Error Resume Next
ThisWorkbook.Worksheets("En_tête").Range("page_01").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
ThisWorkbook.Worksheets("En_tête").Range("page_02").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("En_tête").Range("page_03").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Descriptif").Range("page_01").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Descriptif").Range("page_02").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Descriptif").Range("page_03").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Descriptif").Range("page_04").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Descriptif").Range("page_05").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Carac_tech").Range("page_01").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
ThisWorkbook.Worksheets("Carac_tech").Range("page_02").Copy
With obj.Selection
.PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
.TypeParagraph
.InsertBreak Type:=7
End With
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 'vous pouvez jouer sur les marges pour améliorer la lecture
Set obj = Nothing
Set newObj = Nothing
End Sub