[Calc]Imprimer une page en particulier

Discussions et questions sur tout ce qui concerne la programmation sous StarOffice NeoOffice ou OpenOffice.org tous langages et tous modules confondus.

Modérateur: Vilains modOOos

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 !

[Calc]Imprimer une page en particulier

Messagepar patbart » 02 Nov 2009 11:47

Bonjour,

Je voudrais pouvoir imprimer rien qu'une page sur une feuille. J'ai trouvé sur le forum la procédure de Prisc
mais je n'arrive pas imprimer juste une page en particulier.
Code: Tout sélectionner   AgrandirRéduire
dim feuille as object
dim cellules as object
dim imprim(2) as New com.sun.star.beans.PropertyValue     
feuille = ThisComponent.Sheets.GetByName("fiche")
cellules = feuille.getcellrangebyname("A1:O59")
'SELECTIONNE LA ZONE A IMPRIMER
ThisComponent.CurrentController.select(cellules)
'EFFECTUE 2 COPIES
imprim(0).Name = "CopyCount"
imprim(0).Value = 2
'IMPRIME JUSTE LA 1ERE PAGE
imprim(1).Name = "Page"
imprim(1).Value = "1"
'EFFECTUE L'IMPRESSION
ThisComponent.Print(imprim())


J'ai essayé en changeant le n° de la page mais cela donne rien.
Code: Tout sélectionner   AgrandirRéduire
'IMPRIME JUSTE LA 1ERE PAGE
imprim(1).Name = "Page"
imprim(1).Value = "2"


Merci de m'éclairer.
@+ Patbart
OpenOffice 3.1 sous Windows XP
patbart
NOOouvel adepte
NOOouvel adepte
 
Messages: 23
Inscrit le: 22 Juil 2009 15:22

Re: [Calc]Imprimer une page en particulier

Messagepar Dude » 02 Nov 2009 12:50

Salut,

On va (encore) se répéter : en plus du code, fournir avec un fichier complet. Cela augmentera les chances de réponse en évitant d'avoir à recréer quelque chose qui au final, pourrait ne pas convenir.

Rapidement fait :
Code: Tout sélectionner   AgrandirRéduire
Sub ImprimeZone

    dim oDoc as object
    dim dispatcher as object
    dim oZone as object
    dim oClasseur as object
    dim oFeuille as object
    dim PropVal(2) as new com.sun.star.beans.PropertyValue

    oDoc = ThisComponent
    oClasseur = Mondocument.sheets
    oFeuille = oClasseur.getByName("Test") '<< ici le nom de la feuille
    oZone = oFeuille.getCellRangeByName("A1:J10") '<< la zone à imprimer
    Mondocument.currentController.Select(oZone)

    oDoc = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

    PropVal(0).Name = "Copies"
    PropVal(0).Value = 1
    PropVal(1).Name = "Selection"
    PropVal(1).Value = true
    PropVal(2).Name = "Collate"
    PropVal(2).Value = false

    dispatcher.executeDispatch(oDoc, ".uno:Print", "", 0, PropVal())

End sub
OOo 3.2DEV EN sous Windows XP SP3

Pratique, utilisez le service CiJoint pour joindre un exemple et illustrer votre propos.

Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.

Améliorer OOo en votant les issues
Avatar de l’utilisateur
Dude
GourOOou
GourOOou
 
Messages: 7936
Inscrit le: 03 Mar 2006 09:45
Localisation: Lyon, France

Re: [Calc]Imprimer une page en particulier

Messagepar patbart » 02 Nov 2009 16:02

Bonjour Dude,

J'ai essayé ton code , il fonctionne en partie. Il imprime toute la feuille et non pas une zone définie.
Mais ce n'est pas vraiment ça que je souhaite, définir une zone, j'ai réussi à le faire ce que je voudrai,
c'est sur une feuille de plusieurs pages pouvoir imprimer par exemple la feuille 4.
Et là, je bloque.
Ci joint un fichier avec ton code et le code de Prisc.
test_impression.ods
(13.74 Kio) Téléchargé 6 fois


Merci.
@+ Patbart
OpenOffice 3.1 sous Windows XP
patbart
NOOouvel adepte
NOOouvel adepte
 
Messages: 23
Inscrit le: 22 Juil 2009 15:22

Re: [Calc]Imprimer une page en particulier

Messagepar Dude » 02 Nov 2009 16:12

patbart a écrit:Mais ce n'est pas vraiment ça que je souhaite, définir une zone, j'ai réussi à le faire ce que je voudrai,
c'est sur une feuille de plusieurs pages pouvoir imprimer par exemple la feuille 4.

Et bien, tu définies une zone du contenu de ce qui va s'imprimer en page 4
OOo 3.2DEV EN sous Windows XP SP3

Pratique, utilisez le service CiJoint pour joindre un exemple et illustrer votre propos.

Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.

Améliorer OOo en votant les issues
Avatar de l’utilisateur
Dude
GourOOou
GourOOou
 
Messages: 7936
Inscrit le: 03 Mar 2006 09:45
Localisation: Lyon, France

Re: [Calc]Imprimer une page en particulier

Messagepar patbart » 02 Nov 2009 16:43

C'est une solution mais il doit bien avoir
moyen d'imprimer une page sans être obligé
de définir une zone.
Je continue mes recherches...

Merci Dude
OpenOffice 3.1 sous Windows XP
patbart
NOOouvel adepte
NOOouvel adepte
 
Messages: 23
Inscrit le: 22 Juil 2009 15:22

Re: [Calc]Imprimer une page en particulier

Messagepar patbart » 03 Nov 2009 17:51

Re Bonjour,

J'ai trouvé une solution. Je me suis servi de l'enregistreur de macro
et j'ai fait une boite de dialogue avec des boutons options qui m'impriment
les pages que je souhaite.
Voici une partie du code pour imprimer
Code: Tout sélectionner   AgrandirRéduire
sub PageUn
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(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Copies"
args1(0).Value = 1
args1(1).Name = "RangeText"
args1(1).Value = "1"
args1(2).Name = "Collate"
args1(2).Value = true

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

end sub

J'ai copié plusieurs fois ce code et j'ai modifié la partie
args1(1).Value = "1" en mettant le n° de la page
J'ai essayé de faire une boucle pour m'éviter de répéter
plusieurs fois la même procédure mais je n'ai pas réussi.
Voici le fichier modifié si ça peut aider quelqu'un ou
si quelqu'un arrive à faire plus court.

Bonne soirée
test_impression.ods
(15.9 Kio) Téléchargé 1 fois


Le modérateur a écrit: :alerte: 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.
OpenOffice 3.1 sous Windows XP
patbart
NOOouvel adepte
NOOouvel adepte
 
Messages: 23
Inscrit le: 22 Juil 2009 15:22

Re: [Calc]Imprimer une page en particulier

Messagepar bm92 » 03 Nov 2009 20:12

Bonsoir,
patbart a écrit:Je voudrais pouvoir imprimer rien qu'une page sur une feuille. J'ai trouvé sur le forum la procédure de Prisc
mais je n'arrive pas imprimer juste une page en particulier.
Code: Tout sélectionner   AgrandirRéduire
( ... )
'IMPRIME JUSTE LA 1ERE PAGE
imprim(1).Name = "Page"
imprim(1).Value = "1"
'EFFECTUE L'IMPRESSION
ThisComponent.Print(imprim())


J'ai essayé en changeant le n° de la page mais cela donne rien.

Donner un lien vers le fil où tu as trouvé la procédure de Prisc nous évite de perdre du temps à le chercher :twisted:
Il s'agit de ce fil. Prisc ne cherchait pas à imprimer une seule page, mais une zone de cellules. Et il a marqué Résolu parce que sa zone s'imprimait sur une seule page :wink:
Pour se limiter à une seule page d'impression, la macro ne marche pas, à cause d'une petite erreur. Il faut écrire :
Code: Tout sélectionner   AgrandirRéduire
'IMPRIME JUSTE LA PAGE 2
imprim(1).Name = "Pages"
imprim(1).Value = "2"

Le nom du paramètre est Pages, au pluriel.
Bernard

OpenOffice.org 1.1.5 fr + patch securite 1 et 2
OpenOffice.org 3.1.1 en + plusieurs langpacks
MS-Windows XP Home SP3
bm92
SuppOOorter
SuppOOorter
 
Messages: 1377
Inscrit le: 26 Nov 2005 15:42

Re: [Calc]Imprimer une page en particulier

Messagepar patbart » 04 Nov 2009 09:40

Bonjour,

Le modérateur a écrit: :alerte:
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.


Je regarde ce qui est demandé et si c'est à ma porté je le fais.

bm92, vu pour le "s", par contre j'ai essayé de remplacer le "1" par une variable
du style
page = 1
imprim(1).Value = page
mais cela ne fonctionne pas, as tu une idée.

Merci
OpenOffice 3.1 sous Windows XP
patbart
NOOouvel adepte
NOOouvel adepte
 
Messages: 23
Inscrit le: 22 Juil 2009 15:22

Re: [Calc]Imprimer une page en particulier

Messagepar Alain de La Chaume » 04 Nov 2009 11:01

Bonjour patbart

bm92 vous a dit :
Code: Tout sélectionner   AgrandirRéduire
'IMPRIME JUSTE LA PAGE 2
imprim(1).Name = "Pages"
imprim(1).Value = "2"
et non pas :
Code: Tout sélectionner   AgrandirRéduire
'IMPRIME JUSTE LA PAGE 2
imprim(1).Name = "Pages"
imprim(1).Value = 2
Bien cOOordialement, Alain
API-culteur et pêcheur de macros avec OOo 3.1.1 version officielle sous Linux Ubuntu 8.04
Pour rechercher efficacement dans ce forum
Le SDK nouveau (3.1.1) est arrivé ici !
Avatar de l’utilisateur
Alain de La Chaume
Membre cOOonverti
Membre cOOonverti
 
Messages: 354
Inscrit le: 28 Sep 2008 14:56
Localisation: Complètement à l'Ouest

Re: [Calc]Imprimer une page en particulier

Messagepar patbart » 04 Nov 2009 16:21

Bonjour Alain de la Chaume,

J'ai compris ce qu'a dit bm92, mais je demandais si
il était possible de remplacer le "1" par une variable.
Dans le fichier joint un peu plus haut, j'ai créé une boîte de
dialogue avec des boutons options

Code: Tout sélectionner   AgrandirRéduire
for x = 1 to 6
If impression(x) = true then
page = x
exit for
end if
next x
imprim(1).name = "Pages"
imprim(1).Value = "1" remplacé par la variable  page

Voilà en gros ce que j'aimerais

Patbart
OpenOffice 3.1 sous Windows XP
patbart
NOOouvel adepte
NOOouvel adepte
 
Messages: 23
Inscrit le: 22 Juil 2009 15:22

Re: [Calc]Imprimer une page en particulier

Messagepar bm92 » 04 Nov 2009 16:31

Bonjour,

L'option Pages doit recevoir une chaîne de caractères.
Avec la même syntaxe que dans l'impression par le menu Fichier > Imprimer
Aide F1 a écrit:Pages
Imprime uniquement les pages spécifiées dans la zone Pages.
Pour imprimer une série de pages, insérez un tiret entre les numéros de page (3-6). Pour imprimer des pages individuelles, utilisez des points-virgules (7;9;11). Il est également possible d'imprimer un ensemble de séries de pages et de pages individuelles en combinant tirets et points-virgules (3-6;8;10;12).
Bernard

OpenOffice.org 1.1.5 fr + patch securite 1 et 2
OpenOffice.org 3.1.1 en + plusieurs langpacks
MS-Windows XP Home SP3
bm92
SuppOOorter
SuppOOorter
 
Messages: 1377
Inscrit le: 26 Nov 2005 15:42


Retour vers Macros et API

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité