Bonjour,
je nobtiens pas le même résultat lorsque jexécute une macro en mode direct
(appelée par un bouton) et en mode débogage (pas à pas) par lappui sur la
touche F8.
Dans le premier cas les colonnes ne sont pas masquées et la zone
dimpression est trop importante, cela imprime toute les colonnes
Dans le deuxième cas les colonnes sont cachées et la zone dimpression 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
- [fr-users] Macro sous Calc différence de résultats entre exécution directe et exécution en mode pas à pas · Eckstein Georges (EDU)
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.