[Résolu][Calc] Impression nb page en fonction d'une cellule

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 !
gunsman
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 28 sept. 2016 20:20

[Résolu][Calc] Impression nb page en fonction d'une cellule

Message par gunsman »

Bonjour à tous,

Actuellement j'utilise un moreceau de code afin d'imprimer une zone de Calc.

Code : Tout sélectionner

Sub ImprimerZones1()
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("Etiquette")
   maZone = maFeuille.getCellRangeByName("A1:H51")
   monDocument.CurrentController.ActiveSheet = maFeuille
   adrZones(0) = maZone.RangeAddress
   maFeuille.PrintAreas = adrZones()
   monDocument.Print(Props())
   monDocument.CurrentController.ActiveSheet = FeuilleCourante
End Sub


Cela fonctionne parfaitement, mais lorsque je veux plusieurs exemplaires, je dois relancer ce morceau de code plusieurs fois (via un bouton qui correspond au nombre de fois).


J'aimerais en fonction du nombre situé dans une cellule (par exemple 5 dans la cellule A50) que libreoffice imprime 5 pages. Est-ce possible ?

Merci pour votre aide.
Dernière modification par gunsman le 21 juin 2019 11:19, modifié 2 fois.
Libre office 7.0.4.2 Debian 11
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 501
Inscription : 11 mai 2013 02:11
Localisation : Aix en Provence

Re: [Calc] Impression nombre page en fonction d'une cellule

Message par Noonours »

Bonjour

Modifie dans ton code:

Code : Tout sélectionner

Dim Props(0) As New com.sun.star.beans.PropertyValue
en:

Code : Tout sélectionner

Dim Props(1) As New com.sun.star.beans.PropertyValue
Puis ajoute les lignes suivantes:

Code : Tout sélectionner

   Props(0).Name = "Wait"
   Props(0).Value = True
   Props(1).Name = "CopyCount"
   Props(1).Value = maFeuille.getCellRangeByName("A50").value
COOordialement,
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 7.6.5.2 Stable et OpenOffice 4.1.15 sous Windows 10
gunsman
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 28 sept. 2016 20:20

Re: [Calc] Impression nombre page en fonction d'une cellule

Message par gunsman »

Génial !!

Merci je fais un essai ce matin !!!!



:super: :bravo:
Libre office 7.0.4.2 Debian 11
gunsman
Membre OOrganisé
Membre OOrganisé
Messages : 86
Inscription : 28 sept. 2016 20:20

Re: [Calc] Impression nombre page en fonction d'une cellule

Message par gunsman »

ça marche !!!


Merci je passe en mode résolu.


:super:


Voilà le code complet pour ceux qui voudrait s'en inspirer :

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(1) As New com.sun.star.beans.PropertyValue
Dim adrZones(0) As New com.sun.star.table.CellRangeAddress
   monDocument = thisComponent
   FeuilleCourante = monDocument.currentController.ActiveSheet
   lesFeuilles = monDocument.Sheets
   maFeuille = lesFeuilles.getByName("Nom_de_l_onglet")
   maZone = maFeuille.getCellRangeByName("A1:U62")
   monDocument.CurrentController.ActiveSheet = maFeuille
      Props(0).Name = "Wait"
   Props(0).Value = True
   Props(1).Name = "CopyCount"
   Props(1).Value = maFeuille.getCellRangeByName("A50").value
   adrZones(0) = maZone.RangeAddress
   maFeuille.PrintAreas = adrZones()
   monDocument.Print(Props())
   monDocument.CurrentController.ActiveSheet = FeuilleCourante
End Sub
Libre office 7.0.4.2 Debian 11
Verrouillé