[Résolu] imprimer sur une même feuille 2 morceaux de tableau

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 !
krusty
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 02 juin 2006 08:20

[Résolu] imprimer sur une même feuille 2 morceaux de tableau

Message par krusty »

Bonjour,

voilà, j'essaye de créer une macro qui permet d'imprimer l'un à coté de l'autre deux morceaux de tableau qui ne se touche pas :

exemple de zone : (A3:F8) et (J3:P8) c'est à dire que je ne veux pas imprimer ce qui est dans la zone (G3:O8) mais il faut que les deux morceaux de tableau qui seront imprimés ne forment qu'un seul tableau sur le papier.

Si quelqu'un peut m'aider, je le remercie d'avance...
Dernière modification par krusty le 12 juin 2006 12:01, modifié 1 fois.
OpenOffice 2.0 sur windows
OpenOffice 1.1 sur Linux Mandrake 10
armoul666
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 31 mars 2006 07:18
Localisation : Châlons en Champagne

Message par armoul666 »

Salut,

tu pourrais essayer de faire un tableau temporaire qui regroupe les colonnes que tu veux. Ensuite, tu sélectionnes ce tableau et tu l'imprimes.
Windows XP SP2 - OOo 2.0.2
Mac OS X.4.6 OOo 2.0.1
krusty
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 02 juin 2006 08:20

Message par krusty »

Merci, j'aime bien ton idée, elle m'avait effleuré l'esprit mais le fait est que je ne vois pas comment le réaliser facilement dans mon code pour imprimer puisque j'utilise déjà un tableau pour regrouper toutes les zones à imprimer mais sur des pages différentes.

Voici déjà le code de base que j'utilise mais il convient pas exactement au résultat recherché :

Sub Impression_Feuil2
dim Mazone as object
dim Feuille as object
dim MonDoc as object
dim MaZone1 as object
dim MaFeuille as Object
dim AdrZone1(1) as New com.sun.star.table.CellRangeAddress
dim Props() as New com.sun.star.beans.PropertyValue

MonDoc = thisComponent
Feuille = MonDoc.Sheets
MaFeuille = Feuille.getByName("2")
MaZone = MaFeuille.getCellRangeByName("A1:O1")
MaFeuille.TitleColumns = MaZone.RangeAddress
MaFeuille.PrintTitleColumns = True
MaZone1 = MaFeuille.getCellRangeByName("A2:O62")
AdrZone1(0) = MaZone1.RangeAddress
MaZone1 = MaFeuille.getCellRangeByName("A64:O145")
AdrZone1(1) = MaZone1.RangeAddress
MaFeuille.PrintAreas = AdrZone1()
MonDoc.Print(Props())
End Sub
OpenOffice 2.0 sur windows
OpenOffice 1.1 sur Linux Mandrake 10
armoul666
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 31 mars 2006 07:18
Localisation : Châlons en Champagne

Message par armoul666 »

Moi ce que je ferais :

- Je copie les colonnes que je veux imprimer (elles peuvent être dans des feuilles différentes), sur une feuille "temporaire" ou dans une feuille existante.
- Je sélectionne le tableau qui en resulte.
- Je l'imprime.
- Et pour finir, je supprime les colonnes de mon tableau temporaire.

tout ca dans une macro bien sûr.

Je ne voie que cette solution là.
Après, je ne suis pas un pro des macros, y a peut-être une solution plus basique.
Windows XP SP2 - OOo 2.0.2
Mac OS X.4.6 OOo 2.0.1
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Imprimer des plages non contigües

Message par Pierre-Yves Samyn »

Bonjour

Une autre solution simple, avec une macro "enregistrable". Principe : sélectionner la plage "intermédiaire" qu'on ne veut pas imprimer, puis lancer la commande Format Colonne Masquer.

Code : Tout sélectionner

sub PysMasquer
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 = "ToPoint"
args1(0).Value = "G1:I65536"

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:HideColumn", "", 0, Array())


end sub
Aller plus loin :
Il est possible d'affecter cette macro à l'événement "impression" du document par la commande Outils Personnaliser Evénements.
krusty
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 02 juin 2006 08:20

Message par krusty »

Oui je pense que c'est une bonne solution, mais j'avais penser essayer de le faire en utilisant les zones d'impression, car en fait je dois passer des fichiers de Excel vers Calc le seul problème étant les macros, je ne veux pas non plus avoir à modifier le fichier en lui même c'est à dire que je ne veux pas rajouter de feuil ou de tableau afin d'éviter des mauvaises manipulations des utilistaeurs finaux.

Le fait est que si je ne peux faire autrement alors j'utiliserais cette solution.

Merci
OpenOffice 2.0 sur windows
OpenOffice 1.1 sur Linux Mandrake 10
krusty
Membre OOrganisé
Membre OOrganisé
Messages : 54
Inscription : 02 juin 2006 08:20

Message par krusty »

Merci Pierre-Yves

Je pense que cela va résoudre mon problème sans difficulté. De plus je n'ai pas à modifier le fichier donc tout va bien.
OpenOffice 2.0 sur windows
OpenOffice 1.1 sur Linux Mandrake 10
armoul666
NOOuvel adepte
NOOuvel adepte
Messages : 11
Inscription : 31 mars 2006 07:18
Localisation : Châlons en Champagne

Message par armoul666 »

Effectivement cette méthode est beaucoup plus simple que de copier le contenu des colonnes ailleurs.
Astuce très intéressante et notée dans mon carnet.
Windows XP SP2 - OOo 2.0.2
Mac OS X.4.6 OOo 2.0.1