[Résolu][Calc] Export PDF uniquement de la sélection

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Export PDF uniquement de la sélection

Messagepar tytof4042 » 16 Mai 2009 17:57

Bonjour à tous...après avoir parcouru le forum je n'ai pas trouvé comment exporter uniquement ma selection de maniere automatique.
Je dois faire apparaitre le menu PDF pour la selectionner manuellement.
En macro en utilisant selection ou selectiononly toutes mes feuilles sont selectionnées
Pourtant avec l'enregistreur de macro j'ai testé avec et sans sélection pour voir s'il y avait une nuance (parfois tout ne passe pas) et on voit bien apparaitre selection mais sans succès.
Dernière édition par Bidouille le 01 Mars 2013 10:31, édité 4 fois.
Raison: Ajout coche (balise présente)
XP SP2 Athon 2800 1Go 6600GT oOo 3.0.1
tytof4042
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 06 Sep 2007 23:11

Re: [Calc] Export PDF

Messagepar Grenouille » 16 Mai 2009 20:51

Bonsoir,

tytof4042 a écrit:après avoir parcouru le forum je n'ai pas trouvé comment exporter uniquement ma selection de maniere automatique

Pourtant avec les mots de ton titre |export +pdf|, j'obtiens : viewtopic.php?f=8&t=6571&hilit=export+pdf

A+
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
 
Message(s) : 3223
Inscrit le : 13 Jan 2006 17:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: [Calc] Export PDF

Messagepar tytof4042 » 16 Mai 2009 21:29

j'avais déjà consulté ces topics mais sans trouver de réponse..je mets mon code simplifié:
Code : Tout sélectionner   AgrandirRéduire
sub ZoneImpression
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")         
'Définition de la zone   
    Dim origZone(0) as new com.sun.star.beans.PropertyValue
           origZone(0).Name = "ToPoint"
      origZone(0).Value = "$B$3:$S$18"
   dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, origZone())
   dispatcher.executeDispatch(document, ".uno:ChangePrintArea", "", 0, Array())         
end sub

sub ExporterPDF
   ZoneImpression
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args2(2) as new com.sun.star.beans.PropertyValue
   args2(0).Name = "SelectionOnly"
   args2(0).Value = 1
   args2(1).Name = "FilterName"
   args2(1).Value = "calc_pdf_Export"
   args2(2).Name = "URL"
   args2(2).Value = "C:/AdresseFichier.pdf"
   dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args2())
end sub


Les propriétés pour sélectionner une feuille ("PageRange"ou "pages") ne peuvent pas s'appliquer je ne désire qu'une zone d'impression
je remets le fichier l'ancien code ne fonctionnait pas je crois
Pièces jointes
essai.ods
(427.76 Kio) Téléchargé 351 fois
XP SP2 Athon 2800 1Go 6600GT oOo 3.0.1
tytof4042
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 06 Sep 2007 23:11

Re: [Calc] Export PDF

Messagepar Pierre-Yves Samyn » 17 Mai 2009 08:56

Bonjour

tytof4042 a écrit:j'avais déjà consulté ces topics mais sans trouver de réponse
...
Les propriétés pour sélectionner une feuille ("PageRange"ou "pages") ne peuvent pas s'appliquer je ne désire qu'une zone d'impression


Peut-être n'as-tu pas bien lu car le premier exemple donné correspond exactement à ta demande et il ajoute la gestion de la page au cas où la zone d'impression en générerait plusieurs.

Si tu ne veux pas gérer cela (plage tenant sur une page à l'impression), il suffit de commenter / modifier le code comme ceci (ici export de la page $A$1:$B$7) :

Code : Tout sélectionner   AgrandirRéduire
    sub ExportPDF

    dim document as object, dispatcher as object

    dim args1(0) as new com.sun.star.beans.PropertyValue
'    dim propFich(1) As New com.sun.star.beans.PropertyValue
    dim propFich(0) As New com.sun.star.beans.PropertyValue
'    dim filterProps(0) as new com.sun.star.beans.PropertyValue

    dim adresseDoc  as string

'    filterProps(0).Name = "PageRange"
'    filterProps(0).Value = "2"

    document = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    args1(0).Name = "ToPoint"
    args1(0).Value = "$A$1:$B$7"
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
    ' Création de la zone d'impression décrite au dessus
    dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, args1())


    propFich(0).Name = "FilterName"
    propFich(0).Value = "calc_pdf_Export"
'    propFich(1).Name = "FilterData"
'   propFich(1).Value = filterProps()
    adresseDoc = convertToURL("c:\OOomacros\test.pdf")

    thiscomponent.storeToURL(adresseDoc, propFich())

    end sub
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 11276
Inscrit le : 02 Mai 2006 09:42

Re: [Résolu][Calc] Export PDF

Messagepar tytof4042 » 17 Mai 2009 17:26

Ok en fait j'avais plusieurs soucis...le premier j'utilisais le dispatcher avec export qui m'envoyait sur le menu PDF
Le second était qu'en fait, pour imprimer seulement ma zone d'impression sur un seul onglet, il faut effacer les autres zones d'impression du document, ma méthode est un peu lourde mais je n'en connais pas de plus simple je poste la macro pour ceux que ca intéresse car sur les autres posts personne ne parlait d'effacer les anciennes zones d'impression .
Code : Tout sélectionner   AgrandirRéduire
Sub SupprimerZone
'Suppression de l'ancienne de la zone
Dim Cond as string
Cond = monDocument.CurrentController.ActiveSheet.getname   
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")   
   ActivationFeuille("Table") 'Function a créer
   dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
   ActivationFeuille("Commande MDA")
   dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
   ActivationFeuille("Commande SEA")
   dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
   ActivationFeuille("Commande RVL")
   dispatcher.executeDispatch(document, ".uno:DeletePrintArea", "", 0, Array())
ActivationFeuille(Cond)   
End Sub

sub ZoneImpression
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'COMPTEUR
   Dim sMatrice as String
      oAcces = CreateUnoService("com.sun.star.sheet.FunctionAccess")
      sFonction = "COUNTA" 'fonction NBVAL sous Calc
      sMatrice = "B4:B65000"
      monDocument = ThisComponent
      Dim argA(0), NB as Long
         maFeuille = monDocument.CurrentController.ActiveSheet               
         argA(0) = maFeuille.getCellRangeByName(sMatrice)
         NB = oAcces.callFunction(sFonction,argA())
      Dim Cond as string
         Cond = monDocument.CurrentController.ActiveSheet.getname            
   
'Définition de la zone   
   Dim origZone(0) as new com.sun.star.beans.PropertyValue
   Dim origLigne as Integer
   Dim destLigne as Integer
      if    Cond = "Commande MDA" OR Cond = "Commande SEA" OR Cond = "Commande RVL" then
      origLigne = 2
      destLigne = origLigne+NB+1
      origZone(0).Name = "ToPoint"
      origZone(0).Value = "$B$"+origLigne+":$S"+destLigne
      end if
      if    Cond = "Table" then
      origLigne = 1
      destLigne = origLigne+NB
      origZone(0).Name = "ToPoint"
      origZone(0).Value = "$A$"+origLigne+":$AX"+destLigne
      end if
   dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, origZone())
   dim args2(2) as new com.sun.star.beans.PropertyValue
   args2(0).Name = "PrintArea"
   args2(0).Value = origZone(0).Value
   args2(1).Name = "PrintRepeatRow"
   args2(1).Value = ""
   args2(2).Name = "PrintRepeatCol"
   args2(2).Value = ""
   dispatcher.executeDispatch(document, ".uno:ChangePrintArea", "", 0, args2())
         
end sub

sub ExporterPDF
'SupprimerZone
ZoneImpression
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   
Dim AdresseFichier As String, NomFichier As String
If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") then
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If
sDocUrl = ThisComponent.URL
sDocChemin = DirectoryNameoutofPath(sDocUrl, "/")
nomFichier = "Export liste"
AdresseFichier = sDocChemin & "/" & nomFichier & ".pdf"   
dim propFich(1) As New com.sun.star.beans.PropertyValue   
   propFich(0).Name = "FilterName"
   propFich(0).Value = "calc_pdf_Export"
   propFich(1).Name = "URL"
   propFich(1).Value = AdresseFichier
    thiscomponent.storeToURL(AdresseFichier, propFich())
end sub
XP SP2 Athon 2800 1Go 6600GT oOo 3.0.1
tytof4042
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 21
Inscrit le : 06 Sep 2007 23:11


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Qwant [Bot] et 6 invité(s)