Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


Bonjour,

je n’obtiens pas le même résultat lorsque j’exécute une macro en mode direct
(appelée par un bouton) et en mode débogage (pas à pas) par l’appui sur la
touche F8.

 

Dans le premier cas les colonnes ne sont pas masquées et la zone
d’impression est trop importante, cela imprime toute les colonnes

 

Dans le deuxième cas les colonnes sont cachées et la zone d’impression est
alors correcte

 

Avez-vous une idée ?

 

Ci-dessous la macro en question

 

 

sub Print_P1_P3

 

' Definition des variables

dim MonDocument as object, MesFeuilles as Object

dim MaFeuille as Object, MaCellule as Object

dim MaZone as Object, MesColonnes as Object, UneColonne as Object

dim Dispatcher as object

dim NombreLigne as Integer

dim AdresseColonnes as String, AdressePrint as String

dim Props1(1) as new com.sun.star.beans.PropertyValue

dim Props2(1) as new com.sun.star.beans.PropertyValue

dim Props3(3) as new com.sun.star.beans.PropertyValue

dim Props5(0) as new com.sun.star.beans.PropertyValue

dim AdrZones(1) As New com.sun.star.table.CellRangeAddress

 

' Initialisation des variables de la feuille

MonDocument = ThisComponent

MesFeuilles = MonDocument.Sheets

MaFeuille = MesFeuilles.getByName("1er trimestre")

MonDocument = ThisComponent.CurrentController.Frame

Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

 

' Sélection de la première cellule

Props5(0).Name = "ToPoint"

Props5(0).Value = "$A$1"

Dispatcher.executeDispatch(MonDocument, ".uno:GoToCell", "", 0, Props5())

 

' Détermination du nombre de ligne à imprimer

NombreLigne = 0

Do

NombreLigne = InputBox("Donne moi le nombre d'élèves de la classe !")

Loop While Not NombreLigne >0

NombreLigne = NombreLigne * 2 + 4

 

' Masquage des colonnes inutiles

MonDocument = ThisComponent

AdresseColonnes = "$C$1:$BV$" & NombreLigne

MaZone = MaFeuille.getCellRangeByName(AdresseColonnes)

MesColonnes = MaZone.Columns

MesColonnes.IsVisible = False

 

' Impression de la zone désirée

AdressePrint = "$A$1:$DF$" & NombreLigne

MaZone = MaFeuille.getCellRangeByName(AdressePrint)

AdrZones(0) = MaZone.RangeAddress

MaFeuille.PrintAreas = AdrZones()

 

'Définition du format de page

Dim PageStyleFamille as Object, PageStyle as Object 

PageStyleFamille=MonDocument.StyleFamilies.getByName("PageStyles") 

PageStyle=PageStyleFamille.getByName("PageStyle_1ère Période") 

with PageStyle 

   .ScaleToPagesX=1 'nombre de page horizontales

   .ScaleToPagesY=1 'nombre de page verticales

   .IsLandscape=true 'orientation de la page

   .width=29700

   .height=21000

end with 

 

' Paramétrage final de l'impression

MonDocument = ThisComponent.CurrentController.Frame

Props3(0).Name = "Copies"

Props3(0).Value = 1

Props3(1).Name = "RangeText"

Props3(1).Value = "1"

Props3(2).Name = "Collate"

Props3(2).Value = false

Props3(3).Name = "Wait"

Props3(3).Value = True

Dispatcher.executeDispatch(MonDocument, ".uno:Print", "", 0, Props3())

 

' Ré-afichage des colonnes

MonDocument = ThisComponent

MaZone = MaFeuille.getCellRangeByName(AdresseColonnes)

MesColonnes = MaZone.Columns

MesColonnes.IsVisible = True

 

' Sélection de la nouvelle cellule

MonDocument = ThisComponent.CurrentController.Frame

Props5(0).Name = "ToPoint"

Props5(0).Value = "$A$1"

Dispatcher.executeDispatch(MonDocument, ".uno:GoToCell", "", 0, Props5())

 

' Sélection de la cellule de la dernière semaine de la page précédente

MonDocument = ThisComponent

MaCellule = MaFeuille.getCellRangeByName("$BN$5")

MonDocument.currentController.Select(MaCellule)

 

' Placement du curseur sur la bonne cellule

MonDocument = ThisComponent.CurrentController.Frame

Props1(0).Name = "By"

Props1(0).Value = 1

Props1(1).Name = "Sel"

Props1(1).Value = false

Dispatcher.executeDispatch(MonDocument, ".uno:GoRight", "", 0, Props1())

Props2(0).Name = "By"

Props2(0).Value = 1

Props2(1).Name = "Sel"

Props2(1).Value = false

Dispatcher.executeDispatch(MonDocument, ".uno:GoLeft", "", 0, Props1())

end sub

 

 

Merci de votre réponse

 

Georges Eckstein
Windows 7 et LibreOffice  3.5.5.3

____________________________________________ 
P Merci de penser à l'environnement avant d'imprimer ce courriel 

 


-- 
Envoyez un mail à users+help@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.