[Résolu][Calc]Imprimer une zone

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 !
testooo
Membre OOrganisé
Membre OOrganisé
Messages : 75
Inscription : 01 oct. 2007 21:16

[Résolu][Calc]Imprimer une zone

Message par testooo »


La modération vous a écrit: par macro supprimé du titre car le terme macro est implicite ici

Bonjour,
dans le classeur ci-joint, j'essaie d'imprimer le Range Feuille1:B10:G14 en cliquant sur un bouton.

Mon problème est que c'est la zone B10:G14 de la feuille active qui est imprimée et non la zone de la Feuille1, même si je pense forcer la feuille avec:

Code : Tout sélectionner

maFeuille = lesFeuilles.getByName("Feuille1")
-si je clique sur le bouton de la Feuille1 j'imprime le range de la Feuille1 : OK
-si je clique sur le bouton de la Feuille2 j'imprime le range de la Feuille2 : pourquoi?????

Merci de jeter un oeil à mon code (que j'ai pompé surement sur ce forum) et de me dire pourquoi maFeuille n'est pas prise en compte.

Cordialement
Chris
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par testooo le 07 févr. 2017 17:23, modifié 1 fois.
Libre Office Version: 7.6.2.1 sous Win10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Imprimer une zone

Message par Dude »

Salut,

Regarde déjà si tu as bien défini tous les paramètres dans le tableau que tu passes à la propriété PrintAreas.
Sers toi de XRay pour vérifier que la variable com.sun.star.table.CellRangeAddress est correcte.
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc]Imprimer une zone

Message par Hubert Lambert »

Bonjour,

Pour que la macro fonctionne, il faudra en outre :
- décocher l'option "Imprimer uniquement les feuilles sélectionnées" dans Outils -> Options -> LibreOffice Calc -> Imprimer ;
- supprimer toutes les zones d'impression avant de définir celle correspondant à la plage voulue.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
testooo
Membre OOrganisé
Membre OOrganisé
Messages : 75
Inscription : 01 oct. 2007 21:16

Re: [Calc]Imprimer une zone

Message par testooo »

Bonjour à tous et à Dude en particulier,

Merci pour l'assistance!!!
je viens de regarder com.sun.star.table.CellRangeAddress et que ce soit en cliquant sur imprimer de la feuille1 ou imprimer de la feuille2 ca me dit que j'ai bien la Feuille1 dans les 2 cas...

j'ai aussi essayé xRay sur :
Xray( maFeuille.PrintAreas)
et ca me dit que c'est la feuille1 alors que ca imprime la feuille2 quand je clique sur le bouton de la feuille2.

(je ne suis pas certain de savoir me servir de Xray!! )

Mon code à problèmes:

Code : Tout sélectionner

Sub ImprimerZones()
Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maZone As Object
Dim Props() As New com.sun.star.beans.PropertyValue
Dim adrZones(1) As New com.sun.star.table.CellRangeAddress
monDocument = thisComponent
lesFeuilles = monDocument.Sheets
maFeuille = lesFeuilles.getByName("Feuille1")
maZone = maFeuille.getCellRangeByName("B10:G14")
adrZones(0) = maZone.RangeAddress
maFeuille.PrintAreas = adrZones()

Xray( maFeuille.PrintAreas)

monDocument.Print(Props())

End Sub
Xray me donne:

Code : Tout sélectionner

BOUTON IMPRIMER SUR FEUILLE 1 ou FEUILLE 2:

          Array : T( 0 To 1 ) As object  
 
(0)       | Structure : com.sun.star.table.CellRangeAddress 
(1)       | Structure : com.sun.star.table.CellRangeAddress 

T(0):
Sheet                     integer                                 0   
StartColumn               long                                    1   
StartRow                  long                                    9   
EndColumn                 long                                    6   
EndRow                    long                                   13 

T(1):
Sheet                     integer                                 0   
StartColumn               long                                    0   
StartRow                  long                                    0   
EndColumn                 long                                    0   
EndRow                    long                                    0   
Merci à l'avance!!!
Chris
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 7.6.2.1 sous Win10
testooo
Membre OOrganisé
Membre OOrganisé
Messages : 75
Inscription : 01 oct. 2007 21:16

Re: [Calc]Imprimer une zone

Message par testooo »

Bonjour Hubert,
Hubert Lambert a écrit : - décocher l'option "Imprimer uniquement les feuilles sélectionnées" dans Outils -> Options -> LibreOffice Calc -> Imprimer ;
- supprimer toutes les zones d'impression avant de définir celle correspondant à la plage voulue.
Cordialement.
oui je viens de faire ce que tu me suggères et ca fonctionne.. Merci!!!

Par contre, ca ne fait pas mon bonheur car dans ce classeur j'ai plusieurs feuilles, je dois imprimer certaines manuellement et une feuille particulière avec une macro.

Est ce possible?

MErci
Chris

La modération vous 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.
Image
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.

Libre Office Version: 7.6.2.1 sous Win10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Imprimer une zone

Message par Dude »

Analyse un peu mieux ce que te renvoie XRay :

Code : Tout sélectionner

T(0):
Sheet                     integer                                 0 
La structure renseigne la propriété Sheet à 0 soit la feuille indexée correspondant à... Feuille1
Regarde maintenant ce que te renvoie la 2nd structure : rien
Il est donc logique que cela ne fonctionne pas.
Le code fait ce que tu lui demandes.
testooo
Membre OOrganisé
Membre OOrganisé
Messages : 75
Inscription : 01 oct. 2007 21:16

Re: [Calc]Imprimer une zone

Message par testooo »

Merci Dude,
c'est corrigé..

j'ai modifié mon code... maintenant je n'ai plus que T(0) avec les bonnes valeurs mais ca ne marche pas mieux :(
Bien que ce soit la feuille1 qui est dans PrintAreas, ca m'imprime Feuille2 :fou:

est ce que ca se peut que ce soit mon install?
je joins le fichier, est ce que ca fait pareil chez vous aussi?

Code : Tout sélectionner

Sub ImprimerZones()
Dim monDocument As Object, lesFeuilles As Object
Dim maFeuille As Object, maZone As Object
Dim Props(0) As New com.sun.star.beans.PropertyValue
Dim adrZones(0) As New com.sun.star.table.CellRangeAddress
monDocument = thisComponent
lesFeuilles = monDocument.Sheets
maFeuille = lesFeuilles.getByName("Feuille1")
maZone = maFeuille.getCellRangeByName("B10:G14")
adrZones(0) = maZone.RangeAddress
maFeuille.PrintAreas = adrZones()
monDocument.Print(Props())

Xray(maFeuille.PrintAreas)

End Sub

Code : Tout sélectionner


Array : T( 0 To 0 ) As object  
(0)       | Structure : com.sun.star.table.CellRangeAddress 

T(0)
Sheet                     integer                                 0   
StartColumn               long                                    1   
StartRow                  long                                    9   
EndColumn                 long                                    6   
EndRow                    long                                   13  
Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 7.6.2.1 sous Win10
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc]Imprimer une zone

Message par Piaf »

Bonjour
Peux-tu tester :

Code : Tout sélectionner

Sub ImprimerZones()
Dim monDocument As Object, lesFeuilles As Object
Dim FeuilleCourante as Object, maFeuille As Object, maZone As Object
Dim Props(0) As New com.sun.star.beans.PropertyValue
Dim adrZones(0) As New com.sun.star.table.CellRangeAddress
	Props(0).Name = "Wait"
	Props(0).Value = True
	monDocument = thisComponent
	FeuilleCourante = monDocument.currentController.ActiveSheet
	lesFeuilles = monDocument.Sheets
	maFeuille = lesFeuilles.getByName("Feuille1")
	maZone = maFeuille.getCellRangeByName("B10:G14")
	monDocument.CurrentController.ActiveSheet = maFeuille
	adrZones(0) = maZone.RangeAddress
	maFeuille.PrintAreas = adrZones()
	monDocument.Print(Props())
	monDocument.CurrentController.ActiveSheet = FeuilleCourante
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
testooo
Membre OOrganisé
Membre OOrganisé
Messages : 75
Inscription : 01 oct. 2007 21:16

Re: [Calc]Imprimer une zone

Message par testooo »

Salut Piaf,
je dois avouer que je ne comprends toujours pas pourquoi mon code ne marche pas...

mais le tien est parfait!!!!! :bravo:

Merci beaucoup de ton aide!
Chris
Libre Office Version: 7.6.2.1 sous Win10