Bonjour,
Je fais enregistrer une macro sous calc, dans format page dans l'onglet page je définis A4 et portrait, dans l'onglet feuille, dans la liste Mode échelle, je choisis « Adapter les zones d'impression en hauteur et largeur », je fais ok. Je sélectionne des cellules, je vais dans Fichier → Exporter au format PDF et là je choisis Sélection, je fais Exporter, j'enregistre le fichier. J'enregistre ma macro, quand je l’exécute, ça m'ouvre la fenêtre Style de page pour que je fasse quelque chose, je fais et là cela exporte le pdf mais sans choisir uniquement ma sélection.
Je ne comprends pas bien ce qui ne vas ? Auriez-vous une idée ?
Merci d'avance
[Résolu][Calc] Sélection de cellule pour export en PDF
Modérateur : Vilains modOOs
Règles du forum
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 !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
xillibit
- Membre OOrganisé

- Messages : 96
- Inscription : 22 avr. 2006 11:38
[Résolu][Calc] Sélection de cellule pour export en PDF
Dernière modification par xillibit le 06 sept. 2012 13:07, modifié 2 fois.
LibreOffice 5.4.6.2 sous Windows 7 64 bits
-
Churay
- ManitOOu

- Messages : 2668
- Inscription : 30 avr. 2009 04:54
- Localisation : CATALUNYA
Re: [Calc] Macro pour export en PDF
Bonjour
L'exportation au format pdf revient régulièrement : donc des exemples existent sur le forum.
Entre autres ici http://user.services.openoffice.org/fr/ ... 80#p177252

Comment joindre un fichier au format ODF
Veillez également à dépersonnaliser votre fichier joint.
L'exportation au format pdf revient régulièrement : donc des exemples existent sur le forum.
Entre autres ici http://user.services.openoffice.org/fr/ ... 80#p177252
Comment joindre un fichier au format ODF
Veillez également à dépersonnaliser votre fichier joint.
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
-
xillibit
- Membre OOrganisé

- Messages : 96
- Inscription : 22 avr. 2006 11:38
Re: [Calc] Sélection de cellule pour export en PDF
J'ai réussi à trouver comment faire pour l'exportation en PDF, il y a trois choses en plus que je n'arrive pas à faire :
-Définir dans les styles de ma page, dans l'onglet Feuille, pour la liste Modèle = Adapter les zones d'impression en hauteur et largeur -Récupérer le nom du document actif
-Récupérer le nom de l'onglet actif
-Récupérer la zone d'impression qui a été définie Voila mon code :
-Définir dans les styles de ma page, dans l'onglet Feuille, pour la liste Modèle = Adapter les zones d'impression en hauteur et largeur -Récupérer le nom du document actif
-Récupérer le nom de l'onglet actif
-Récupérer la zone d'impression qui a été définie Voila mon code :
Code : Tout sélectionner
REM ***** BASIC *****
sub exportPDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
Dim view As Object
view= thiscomponent.getCurrentController()
fam=thiscomponent.stylefamilies.getbyname("PageStyles")
sh=view.getActivesheet()
style=fam.getbyname(sh.PageStyle)
style.Width = 21000
style.Height = 29700
style.IsLandscape = False
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim LibOSelCourante as object
LibOSelCourante = ThisComponent.CurrentSelection
if LibOSelCourante.supportsService("com.sun.star.sheet.SheetCellRange") then
dim MonFiltre(0) as new com.sun.star.beans.PropertyValue
MonFiltre(0).Name = "Selection"
MonFiltre(0).Value = ThisComponent.CurrentSelection
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Documents%20and%20Settings/toto/Bureau/dupont_jean-michel_2012.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = MonFiltre()
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())
else
msgbox "la sélection doit être soit une cellule, soit une ou plusieurs plages de cellules"
end if
end sub
Sub Main
End SubVous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 5.4.6.2 sous Windows 7 64 bits
-
Churay
- ManitOOu

- Messages : 2668
- Inscription : 30 avr. 2009 04:54
- Localisation : CATALUNYA
Re: [Calc] Sélection de cellule pour export en PDF
Re
-Récupérer le nom du document actif
-Récupérer le nom de l'onglet actif
-Récupérer la zone d'impression qui a été définie
Code : Tout sélectionner
Sub Main
MsgBox NomDOC, 64, "Nom du document"
MsgBox NomOnglet, 64, "Nom de l'onglet actif"
MsgBox ZoneImpression, 64, "Zone d'impression"
End Sub
Function NomDOC As String
NomDOC = thisComponent.Title
End Function
Function NomOnglet
NomOnglet = thisComponent.CurrentController.ActiveSheet.Name
End Function
Function ZoneImpression
Dim oPrint
oPrint = thisComponent.Sheets.getByName(thisComponent.CurrentController.ActiveSheet.Name).PrintAreas
thisComponent.CurrentController.select(oPrint(0))
ZoneImpression = thisComponent.CurrentSelection.AbsoluteName
End Function cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
-
xillibit
- Membre OOrganisé

- Messages : 96
- Inscription : 22 avr. 2006 11:38
Re: [Calc] Sélection de cellule pour export en PDF
J'ai modifié ma macro avec ce que tu m'as donné, la partie pour sélectionner la zone d'impression ne fonctionne pas (Valeur ou type de donnée incorrecte. Index hors de la plage définie), je voudrais aussi supprimer l'extension dans thisComponent.Title :
Code : Tout sélectionner
REM ***** BASIC *****
Sub Main
End Sub
sub exportPDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
Dim view As Object
view= thiscomponent.getCurrentController()
fam=thiscomponent.stylefamilies.getbyname("PageStyles")
sh=view.getActivesheet()
style=fam.getbyname(sh.PageStyle)
style.Width = 21000
style.Height = 29700
rem définit la page en portrait
style.IsLandscape = False
rem définit l'échelle de la page en adaptation pour l'impression en hauteur et largeur
style.ScaleToPagesX = 1
style.ScaleToPagesY = 1
rem sélection de la zone d'impression
oPrint = thisComponent.Sheets.getByName(thisComponent.CurrentController.ActiveSheet.Name).PrintAreas
thisComponent.CurrentController.select(oPrint(0))
ZoneImpression = thisComponent.CurrentSelection.AbsoluteName
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim LibOSelCourante as object
LibOSelCourante = ThisComponent.CurrentSelection
rem vérifie que l'on a bien sélectionné une plage de cellule
if LibOSelCourante.supportsService("com.sun.star.sheet.SheetCellRange") then
dim MonFiltre(0) as new com.sun.star.beans.PropertyValue
MonFiltre(0).Name = "Selection"
MonFiltre(0).Value = ZoneImpression
rem ThisComponent.CurrentSelection
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Documents%20and%20Settings/toto/Bureau/" + thisComponent.Title + "_" + thisComponent.CurrentController.ActiveSheet.Name + ".pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = MonFiltre()
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())
else
msgbox "La sélection doit être soit une cellule, soit une ou plusieurs plages de cellules"
end if
end subLibreOffice 5.4.6.2 sous Windows 7 64 bits
-
xillibit
- Membre OOrganisé

- Messages : 96
- Inscription : 22 avr. 2006 11:38
Re: [Calc] Sélection de cellule pour export en PDF
J'ai trouvé comment supprimer l'extension dans le nom du fichier, maintenant il me reste à voir pourquoi la récupération de la zone d'impression ne fonctionne pas:
P.S. : J'ai trouvé comment résoudre mon problème, je mettrai le code
Code : Tout sélectionner
REM ***** BASIC *****
Sub Main
End Sub
sub exportPDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
dim oPrint as object
Dim view As Object
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If
view= thiscomponent.getCurrentController()
fam=thiscomponent.stylefamilies.getbyname("PageStyles")
sh=view.getActivesheet()
style=fam.getbyname(sh.PageStyle)
style.Width = 21000
style.Height = 29700
rem définit la page en portrait
style.IsLandscape = False
rem définit l'échelle de la page en adaptation pour l'impression en hauteur et largeur
style.ScaleToPagesX = 1
style.ScaleToPagesY = 1
rem sélection de la zone d'impression
oPrint = thisComponent.Sheets.getByName(thisComponent.CurrentController.ActiveSheet.Name).PrintAreas
thisComponent.CurrentController.select(oPrint(0))
ZoneImpression = thisComponent.CurrentSelection.AbsoluteName
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim LibOSelCourante as object
LibOSelCourante = ThisComponent.CurrentSelection
rem vérifie que l'on a bien sélectionné une plage de cellule
if LibOSelCourante.supportsService("com.sun.star.sheet.SheetCellRange") then
dim MonFiltre(0) as new com.sun.star.beans.PropertyValue
MonFiltre(0).Name = "Selection"
MonFiltre(0).Value = ThisComponent.CurrentSelection
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/Documents%20and%20Settings/toto/Bureau/" + GetFileNameWithoutExtension(thisComponent.Title) + "_" + thisComponent.CurrentController.ActiveSheet.Name + ".pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = MonFiltre()
dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())
else
msgbox "La sélection doit être soit une cellule, soit une ou plusieurs plages de cellules"
end if
end subLe modérateur a écrit :Merci de ne pas poster plusieurs messages à la suite !
Si vous devez ajouter un complément d'information, le bouton "Editer" à la droite du message permet d'y remédier.
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.
Dernière modification par OOoch le 23 juil. 2012 19:03, modifié 1 fois.
Raison : Plusieurs messages à la suite.
Raison : Plusieurs messages à la suite.
LibreOffice 5.4.6.2 sous Windows 7 64 bits