Anthonymctm
XLDnaute Occasionnel
Bonjour à tous !
Depuis un fichier Excel, j'ai une macro qui me génère un fichier Word qui va bien.
A la fin de la macro, j'aimerais ajouter quelque ligne pour ajouter le numéro de page en pied de page sur le Word généré.
Voici la macro :
Voilà, si vous savez comment faire, merci
PS : Vous voyez, j'ai tenté ce bout de code trouvé sur le forum
'Worddoc.Sections(1).Footers(wdHeaderFooterPrimary).PageNumbers.Add _
'PageNumberAlignment:=wdAlignPageNumberRight
Mais évidement ça fonctionne pas, il faut déclarer le WordDoc et ça je sais pas faire.
Depuis un fichier Excel, j'ai une macro qui me génère un fichier Word qui va bien.
A la fin de la macro, j'aimerais ajouter quelque ligne pour ajouter le numéro de page en pied de page sur le Word généré.
Voici la macro :
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
' obj.Selection.ParagraphFormat.LeftIndent = (20)
With obj.Selection
.PageSetup.TopMargin = (20)
.PageSetup.LeftMargin = (17.5)
.PageSetup.RightMargin = (20)
.PageSetup.BottomMargin = (0)
End With
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:=wdPasteBitmap, _
Placement:=wdInLine, DisplayAsIcon:=False
' .PasteSpecial Link:=True, DataType:=wdPasteEnhancedMetafile, _
' Placement:=wdInLine, DisplayAsIcon:=False
.InsertBreak Type:=6
End With
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:=wdPasteBitmap, _
Placement:=wdInLine, DisplayAsIcon:=False
.InsertBreak Type:=6
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:=wdPasteBitmap, _
Placement:=wdInLine, DisplayAsIcon:=False
.InsertBreak Type:=6
End With
End If
Next
ThisWorkbook.Worksheets("CGV").Range("CGV").Copy
obj.Selection.PasteSpecial Link:=True, DataType:=wdPasteBitmap, _
Placement:=wdInLine, DisplayAsIcon:=False
'Worddoc.Sections(1).Footers(wdHeaderFooterPrimary).PageNumbers.Add _
'PageNumberAlignment:=wdAlignPageNumberRight
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
Voilà, si vous savez comment faire, merci
PS : Vous voyez, j'ai tenté ce bout de code trouvé sur le forum
'Worddoc.Sections(1).Footers(wdHeaderFooterPrimary).PageNumbers.Add _
'PageNumberAlignment:=wdAlignPageNumberRight
Mais évidement ça fonctionne pas, il faut déclarer le WordDoc et ça je sais pas faire.