[Résolu] [Calc] enregistrer 1 fichier avec nom de cellule

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 !
jmsch
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 14 déc. 2008 17:57

[Résolu] [Calc] enregistrer 1 fichier avec nom de cellule

Message par jmsch »

bonsoir,
je cherche à faire une macro pour enregistrer une partie de mon fichier en PDF (la zone d'impression) en utilisant comme nom le contenu de la cellule j8 de ma feuille
Pour le momment l'enrégistrement fonctionne mais s'arrete sur la boite de Dialogue de l'imprimante CutePDF Writer ou je dois mettre manuellement le nom et valider l'enrégistrement du fichier. Je n'arrive pas à nommer le fichier automatiquement avec le contenu de la celulle.

Merci de votre aide

Code : Tout sélectionner

sub PDF
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Printer"
args1(0).Value = "CutePDF Writer"

dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Copies"
args2(0).Value = 1
args2(1).Name = "Collate"
args2(1).Value = true

dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())


end sub
Dernière modification par Oukcha le 15 janv. 2009 06:07, modifié 4 fois.
Raison : Pose balise (coche présente)
OpenOffice 3.01 sous vista sp1
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
Messages : 3223
Inscription : 13 janv. 2006 16:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: [calc]macro pour enregistrer 1 fichier avec nom de cellule

Message par Grenouille »

Bonsoir,

Tu es nouveau et pas bien habitué aux règles.

Le terme macro est inutile dans le titre d'une question postée dans la section... Macro et la balise n'est pas correct : [Calc]

Pour augmenter la lisibilité de ton code, tu peux te servir du bouton | Code | pour l'encadrer. Comme ceci :

Code : Tout sélectionner

Du code
Ce fil qui traite de la même problématique devrait t'aider : http://user.services.openoffice.org/fr/ ... 655#p70704

A+
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
jmsch
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 14 déc. 2008 17:57

Re: [calc]macro pour enregistrer 1 fichier avec nom de cellule

Message par jmsch »

merci de t'intéresser à mon problème.
Effectivement je suis nouveau sur le forum, je viens de passer il y a 15 jours d'excel sur oo que je trouve pas mal d'omage que je plane dans les macros.
Je vais aller voir le lien que tu ma indiqué
Dernière modification par jmsch le 06 janv. 2009 21:47, modifié 1 fois.
OpenOffice 3.01 sous vista sp1
Avatar de l’utilisateur
MrPropre
MOOdérateur
MOOdérateur
Messages : 1138
Inscription : 01 oct. 2008 16:54

Re: [calc]macro pour enregistrer 1 fichier avec nom de cellule

Message par MrPropre »

Grenouille a écrit :Le terme macro est inutile dans le titre d'une question postée dans la section... Macro et la balise n'est pas correct : [Calc]
jmsch a écrit :Effectivement je suis nouveau sur le forum
J'ai (encore) corrigé votre titre et encadré le code de votre message. Merci de le faire vous même la prochaine fois.
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
jmsch
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 14 déc. 2008 17:57

Re: [Calc] enregistrer 1 fichier avec nom de cellule

Message par jmsch »

J'ai essayé ça mais la ça enrégistre le fichier complet au format ods moi il me faut juste une zone(la zone d'impression celulle b1:h33 et au format pdf
je vais donc continuer mes recherches mais je ne suis pas sur d'être sur la bonne voie.

Code : Tout sélectionner

sub enregistre
rem ----------------------------------------------------------------------
rem definitions des variables
rem ----------------------------------------------------------------------
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
rem ----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem Récupération du contenu de la cellule B8
rem ----------------------------------------------------------------------
MonDoc = ThisComponent
MaFeuil = MonDoc.CurrentController.ActiveSheet
MonTxt = MaFeuil.GetCellRangeByName("j8").String 
rem ----------------------------------------------------------------------
rem Enregistrement du nouveau fichier
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///D:/Documents/pdf/" & MonTxt & ".ods"
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
args1(2).Name = "SelectionOnly"
args1(2).Value = true

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())

rem ----------------------------------------------------------------------
rem fin de la macro
rem ----------------------------------------------------------------------

end sub
OpenOffice 3.01 sous vista sp1
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
Messages : 3223
Inscription : 13 janv. 2006 16:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: [Calc] enregistrer 1 fichier avec nom de cellule

Message par Grenouille »

Bonsoir,

Dans le code que tu exposes, il est évident que :

Code : Tout sélectionner

args1(1).Name = "FilterName"
args1(1).Value = "calc8"
Fait ce que tu lui demandes :
jmsch a écrit :ça enrégistre le fichier complet au format ods
Je t'ai indiqué ce 1er fil pour te montrer comment on récupère un nom de cellule. Si tu es débutant, tu dois décomposer ton problème 'complexe' en sous-problèmes 'élémentaires'.

Si je prends ton cas :
1- récupération du nom de cellule dans une chaîne texte
2- récupération d'une zone de cellule
3- export au format pdf

Une recherche sur |export +pdf| me donne ceci :
http://user.services.openoffice.org/fr/ ... export+pdf

Avec cela, tu devrais pouvoir faire le 2 et 3

Bon courage
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
jmsch
Membre lOOyal
Membre lOOyal
Messages : 34
Inscription : 14 déc. 2008 17:57

Re: [Calc] enregistrer 1 fichier avec nom de cellule

Message par jmsch »

Voila le code que j'ai fait et qui me sauve les devis au format pdf avec le nom voulue dans le dossier de mon choix.
Elle pourait surement etre amélioré mais elle fonctionne
Merci de votre aide et des vos conseils

Code : Tout sélectionner

Sub devis_pdf
Dim mondocument as object
Dim propFich(0) as New com.sun.star.beans.PropertyValue 
Dim adressedoc as string
Dim nomclient as string, url as string, repertoire as string, extension as string 

mondocument = thisComponent 
repertoire = "file:///D:/documents jm/martin/facturier/devis_pdf/" 

rem ----------------------------------------------------------------------
rem Récupération du contenu de la cellule u26
rem ----------------------------------------------------------------------
MonDoc = ThisComponent
MaFeuil = MonDoc.CurrentController.ActiveSheet
MonTxt = MaFeuil.GetCellRangeByName("u26").String 
rem ----------------------------------------------------------------------
   
extension = ".pdf" 
url = repertoire + MonTxt + extension 
adressedoc = converttourl(url) 
propFich(0).Name = "FilterName" 
propFich(0).Value = "calc_pdf_Export" 
mondocument.storeToURL( adressedoc, propFich()) 
End Sub
OpenOffice 3.01 sous vista sp1