J'ai puisé de ci de là une macro me permettant d'exporter ma feuille au format PDF dans le même dossier que le document.
Code : Tout sélectionner
'Enregistrement au format PDF Feuille PermMensuelle format Paysage
Sub ExportPDF(oEvt)
Dim oDoc As Object, oSheetM As Object, oSheetW01 As Object, oSheetW02 As Object, oSheetW03 As Object, oSheetW04 As Object, oSheetW05 As Object
Dim oRanges(0), oRange As New com.sun.star.table.CellRangeAddress
Dim aOptionsPrinter(0) As New com.sun.star.beans.PropertyValue
dim aFiltreExport(2) As new com.sun.star.beans.PropertyValue
dim aFiltreSelect(0) As new com.sun.star.beans.PropertyValue
Dim sBtn As String
' Le document
oDoc = thisComponent
' La feuille Relevé Compteurs
oSheetM = oDoc.Sheets.getByName("Relevé Compteurs")
' La feuille Kms Parcourus Mensuels
oSheetW01 = oDoc.Sheets.getByName("Kms Parcourus Mensuels")
' Park Automobile SRT
oSheetW02 = oDoc.Sheets.getByName("PARC AUTOMOBILE SRT")
' On identifie le bouton qui a appellle la macro
sBtn = oEvt.source.Model.Name
' Orientation de la page
aOptionsPrinter(0).Name = "PaperOrientation"
SELECT CASE sBtn
CASE "Btn_PDFM"
' Orientation feuille Relevé Compteurs
aOptionsPrinter(0).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
thisComponent.setPrinter( aOptionsPrinter() )
' Option méthode setPrintAreas
oRanges(0) = oSheetM.getCellRangeByName("A1:P22").RangeAddress
oSheetM.setPrintAreas(oRanges()) : oSheetW01.setPrintAreas(ARRAY())
' Option choix de la feuille par les options du Filtre
' aFiltreSelect(0).Value = oSheetM
CASE "Btn_PDFW01"
' Orientation Kms Parcourus Mensuels
aOptionsPrinter(0).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
thisComponent.setPrinter( aOptionsPrinter() )
' Option méthode setPrintAreas
oRanges(0) = oSheetW01.getCellRangeByName("A1:P22").RangeAddress
oSheetW01.setPrintAreas(oRanges()) : oSheetM.setPrintAreas(ARRAY()) : oSheetW02.setPrintAreas(ARRAY())' : oSheetW03.setPrintAreas(ARRAY())
' Option choix de la feuille par les options du Filtre
' aFiltreSelect(0).Value = oSheetW
CASE "Btn_PDFW02"
' Orientation Park Automobile SRT
aOptionsPrinter(0).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
thisComponent.setPrinter( aOptionsPrinter() )
' Option méthode setPrintAreas
oRanges(0) = oSheetW02.getCellRangeByName("A1:F25").RangeAddress
oSheetW02.setPrintAreas(oRanges()) : oSheetM.setPrintAreas(ARRAY()) : oSheetW02.setPrintAreas(ARRAY())
' Option choix de la feuille par les options du Filtre
' aFiltreSelect(0).Value = oSheetW
CASE Else
' Dans le cas où la macro serai affectée à un autre bouton
' Le traitement serait à prévoir ici
Exit Sub
END SELECT
'Choix de l'export : uniquement la feuille active
' Option choix de la feuille par les options du Filtre
' aFiltreSelect(0).Name = "Selection"
aFiltreExport(0).Name = "FilterName"
aFiltreExport(0).Value = "calc_pdf_Export"
aFiltreExport(1).Name = "CompressMode"
aFiltreExport(1).Value = 1
Fichier = Left( ThisComponent.URL , Len(ThisComponent.URL) - 4 ) & "M-" & NomFeuille & "-le " & CStr(Day(Date()))&"."&CStr(Month(Date()))&"."&CStr(Year(Date()))&".pdf"
ThisComponent.storeToUrl( Fichier , aFiltreExport())
End SubJe pense que l'erreur vient de cette programmation:
Code : Tout sélectionner
aFiltreExport(0).Name = "FilterName"
aFiltreExport(0).Value = "calc_pdf_Export"
aFiltreExport(1).Name = "CompressMode"
aFiltreExport(1).Value = 1
Fichier = Left( ThisComponent.URL , Len(ThisComponent.URL) - 4 ) & "M-" & NomFeuille & "-le " & CStr(Day(Date()))&"."&CStr(Month(Date()))&"."&CStr(Year(Date()))&".pdf"
ThisComponent.storeToUrl( Fichier , aFiltreExport())Merci

