Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum 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 !
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:
-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.
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.
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)
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!! )
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
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.
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.
En attendant une prochaine réponse, vous pouvez participer également en répondant à d'autres questions sur notre forum.
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.
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
est ce que ca se peut que ce soit mon install?
je joins le fichier, est ce que ca fait pareil chez vous aussi?
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
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.
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