Page 1 sur 1

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

Publié : 16 mai 2009 16:57
par tytof4042
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.

Re: [Calc] Export PDF

Publié : 16 mai 2009 19:51
par Grenouille
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 : http://user.services.openoffice.org/fr/ ... export+pdf

A+

Re: [Calc] Export PDF

Publié : 16 mai 2009 20:29
par tytof4042
j'avais déjà consulté ces topics mais sans trouver de réponse..je mets mon code simplifié:

Code : Tout sélectionner

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

Re: [Calc] Export PDF

Publié : 17 mai 2009 07:56
par Pierre-Yves Samyn
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

    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

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

Publié : 17 mai 2009 16:26
par tytof4042
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

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