[Résolu][Calc]Export Pdf plage de cellules variable
Publié : 14 juin 2019 10:18
Bonjour,
Le code ci-joint fonctionnait parfaitement sous windows 7 avec Pdfcréator (filtrages des colonnes utiles et impression de la plage voulue au bon format avec visualisation préalable du Pdf.
Nous sommes maintenant sous Win 10 avec uniquement Microsoft print to Pdf et l'impression des plages utiles se lance directement sans visualisation du PDF (qui ne permettait d'imprimer que les feuilles nécessaires à chaque utilisateur en fonction du portefeuille de gestion de chacun.
J'ai cherché sur le forum et testé différentes solutions mais étant totalement néophyte en programmation je sollicite votre aide et vous remercie d'avance.
Le code ci-joint fonctionnait parfaitement sous windows 7 avec Pdfcréator (filtrages des colonnes utiles et impression de la plage voulue au bon format avec visualisation préalable du Pdf.
Code : Tout sélectionner
Sub impression()
' mise en forme pour impression, création d'un fichier pdf
Dim zoneImprim(0) As New com.sun.star.table.CellRangeAddress
Dim stylesPage, StyleMaPage, enTete as Object
Dim Texte2, Curseur2 As Object
Dim nomStyleMaPage As String
Dim Props(2) As New com.sun.star.beans.PropertyValue
Props(0).Name = "PaperOrientation"
Props(0).Value = com.sun.star.view.PaperOrientation.LANDSCAPE
Props(1).Name = "PaperFormat"
Props(1).Value = com.sun.star.view.PaperFormat.A4
Props(2).Name = "Name"
Props(2).Value = "PDFCreator"
Mondoc.Printer = Props()
maFeuille2 = Mondoc.Sheets.getByName("Données")
' recherche de la dernière ligne
macell2 = maFeuille2.getCellRangeByName("A1")
oCursor = maFeuille2.createCursorByRange(macell2)
oCursor.GotoEndOfUsedArea(True)
aAddress = oCursor.RangeAddress
fin = aAddress.EndRow + 1
' on masque les colonnes Ne conserver que colonnes A G H L R S et T
' Soit respectivement, N° CHO, Numéro titre, NOM, Code ACT, Montant global RAR, TOTAL DU , et enfin, Commentaires
macell2 = maFeuille2.getCellRangeByName("B1:F1")
macell2.Columns.IsVisible = False
macell2 = maFeuille2.getCellRangeByName("I1:K1")
macell2.Columns.IsVisible = False
macell2 = maFeuille2.getCellRangeByName("M1:Q1")
macell2.Columns.IsVisible = False
nomStyleMaPage = maFeuille2.PageStyle
stylesPage = mondoc.StyleFamilies.getByName("PageStyles")
StyleMaPage = stylesPage.getByName(nomStyleMaPage)
StyleMaPage.HeaderIsOn = False
StyleMaPage.FooterIsOn = True
StyleMaPage.PageScale = 100
zoneImprim(0).Sheet = 0
zoneImprim(0).StartColumn = 0 : zoneImprim(0).StartRow = 1 ' A2
zoneImprim(0).EndColumn = 19 : zoneImprim(0).EndRow = fin ' T
Mondoc.currentController.setActiveSheet(Mondoc.Sheets.getByName("Données"))
Mondoc.CurrentController.getActiveSheet().setPrintAreas(zoneImprim())
Mondoc.Print(Array())
wait 100
macell2 = maFeuille2.getCellRangeByName("B1:Q1")
macell2.Columns.IsVisible = True
End Sub
J'ai cherché sur le forum et testé différentes solutions mais étant totalement néophyte en programmation je sollicite votre aide et vous remercie d'avance.