IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

imprimer par macro la zone d'impression d'un onglet


Sujet :

OpenOffice & LibreOffice

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut imprimer par macro la zone d'impression d'un onglet
    Bonjour,
    J'ai trouvé des discussions sur le sujet, mais certains liens censés donner des réponses pointent maintenant vers des sites qui n'ont rien à voir...bref.
    Je viens d'Excel ou j'avais des macros, et je suis donc passé maintenant sur Libre office. Je dois refaire les macros.
    Comme je n'y connais pas grand chose, et que la manip est assez simple, je suis passé par l'enregistreur.
    J'ai une feuille(un fichier) avec 5 onglets. Dans l'un des onglet, il y a un tableau (dont le contenu change). Comme je l'imprime souvent je souhaitais imprimer ce tableau via une macro.
    En manuel, je sélectionne les cellules du tableau, format ,impression, définir. puis Fichier exporte format PDF. ça fonctionne.
    Je fais la même manip en passant par enregistrer une macro. . quand j'exécute la macro ça fonctionne, sauf qu edans le fichier PDF, je me retrouve avec 5 feuilles, c'est à dire qu'il répercute la zone d'impression sur les autres onglet et quand la macro crée le PDF, elle crée autant de page que d'onglets...pourtant dans la zone de dialogue du format du PDF, j'ai bien sélectionné sélection/feuilles selectionnées.
    avez-vous une idée du problème ? (je n'ai pas rencontré ce problème sur excel...qui m'imprimer bien que la zone demandé).
    Merci
    Gérard

  2. #2
    Membre averti Avatar de Mobydick_62
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2009
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 260
    Points : 386
    Points
    386
    Par défaut imprimer par macro la zone d'impression d'un onglet
    Bonjour,
    Si j'ai bien compris ta question tu souhaites que la macro sélectionne un tableau et l'imprime. Pour faire cela il n'est nul besoin de l'exporter en PDF.
    As tu donc vraiment besoin de faire un PDF ?

    Par ailleurs si tu veux que t'on t'aide efficacement il serait souhaitable de joindre ton fichier que tu auras préalablement "anonymisé" ou un autre fichier à titre d'exemple. C'est important pour deux raisons:
    1. de bien connaitre ton besoin
    2. de nous éviter de créer un nouveau fichier CALC pour y créer la macro.

    A titre d'exemple voici un bout de code que j'écris sur "le tas" vite fait. A tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      'Impression de la feuille
      Dim adrZones(0) As New com.sun.star.table.CellRangeAddress
      Dim oFeuille As Object, oZoneImpression As Object 
      oFeuille = ThisComponent.getSheets.getByName("Feuille3") 
      oZoneImpression = oFeuille.getCellRangeByName("A2:B31")
      adrZones(0) = oZoneImpression.RangeAddress
      oFeuille.PrintAreas = adrZones()
    Cordialement
    Libre Office Version: 7.4.3.2 (x64)
    Windows 10

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut enregistrer PDF
    bonjour et merci pour ce début de réponse.
    Oui je dois enregistrer en PDF, car en fait le tableau est une facture (avec un numéro différent à chaque fois).
    J'ai un fichier (avant sous excel) et maintenant sur libre office, que l'on va nommer compta. dans ce fichier il y a 4 onglets, dont un qui comporte un tableau (facture). cet onglet est nommé Facture
    Donc déjà le premier problème est qu'il ne doit imprimer que la zone de la feuille qui est sélectionnée (onglet Facture) et la zone déclarée comme zone d'impression (par la commande du menu "Format, zone d'impression, définir) et pas toutes les zones de toutes les feuilles ( des 4 onglets ) ce qui se passe quand j'exécute la macro.
    ça fonctionne très bien en "manuel", mais ça me ferait gagner du temps de faire la manip par une macro.

    voici le code écrit automatiquement par l'enregistrement macro de libre office
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    REM  *****  BASIC  *****
     
    Sub Main
     
    End Sub
     
     
    sub Facture
    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 = "$A$1"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ToPoint"
    args2(0).Value = "$A$1:$E$37"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
     
    rem ----------------------------------------------------------------------
    dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
     
    rem ----------------------------------------------------------------------
    dim args4(2) as new com.sun.star.beans.PropertyValue
    args4(0).Name = "URL"
    args4(0).Value = "file:///C:/2020/Factures/facture-00000.pdf"
    args4(1).Name = "FilterName"
    args4(1).Value = "calc_pdf_Export"
    args4(2).Name = "FilterData"
    args4(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ViewPDFAfterExport",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportPlaceholders",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Watermark",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Selection",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureLocation",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureReason",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureContactInfo",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignaturePassword",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureCertificate",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SignatureTSA",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseReferenceXObject",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE))
     
    dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args4())
     
     
    end sub
    Une fois que j'aurai réussi (si c'est possible ?...) alors il faudra que je m'attaque au numéro de facture (un numéro qui est dans une cellule nommée NumFact. et qui est à mettre dans le nom du fichier qui s'enregistre en PDF
    Sur la macro d'Excel voilà ce qu ecela donnait (pour la ligne concernée):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Facture Macro
    '
    ' Touche de raccourci du clavier: Ctrl+f
    '
     
        Numfact = Range("D3")
        Range("A1:E36").Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "C:\2020\Factures\facture" & "-" & Numfact & ".pdf" _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
            ' incremente le num de facture
    '
            ' incremente le num de facture

  4. #4
    Membre averti Avatar de Mobydick_62
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2009
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 260
    Points : 386
    Points
    386
    Par défaut enregistrer PDF
    Bonjour,

    Il est possible d'exporter ta zone facture en PDF et de l'enregistrer avec le numéro de facture et ensuite de l'imprimer.
    En fait tout est possible.
    L'utilisation de l'enregistreur de macro ne permet pas de tout faire. Il faut parfois écrire le code Basic directement dans l'éditeur de macro.
    Malheureusement sans ton fichier exemple tu m'obliges à créer un nouveau document CALC, d'y insérer des onglets et de créer un modèle de facture, afin de créer la macro et de vérifier que tout est OK. Et encore pas sur que cela réponde à tous tes besoins car mon fichier sera différent.
    Tu nous facilite pas le travail. Alors que si tu joignais ton fichier avec quelques données bidons je pourrai rapidement t'aider.

    Cordialement
    Libre Office Version: 7.4.3.2 (x64)
    Windows 10

  5. #5
    Membre éprouvé
    Homme Profil pro
    utilisateur
    Inscrit en
    Janvier 2017
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : utilisateur
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 666
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Dans le fichier joint
    j’ai associé la macro "ExportFeuillesVersPDF" avec un clic droit dans la feuille "Date"
    une boite de dialogue s’ouvre, vous pourrez sans doute adapter le code à vos besoins

    gaeil28.ods

    dans votre code vous avez deux zones distinctes
    une fois args2(0).Value = "$A$1:$E$37" et l'autre Range("A1:E36").Select
    LibreOffice 7.5.9.2.M1 (x64) FR-YT 05/12/23
    OS : Windows 11.0

  6. #6
    Membre averti Avatar de Mobydick_62
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2009
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2009
    Messages : 260
    Points : 386
    Points
    386
    Par défaut enregistrer PDF
    Bonjour,
    Le fichier corrigé. Voir le module Export.
    Cordialement

    gaeil28.ods
    Libre Office Version: 7.4.3.2 (x64)
    Windows 10

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Février 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2014
    Messages : 25
    Points : 31
    Points
    31
    Par défaut Merci pour cette macro
    J'ai développé une appli avec basic-libreoffice pour suivre l'évolution quotidienne de sa santé. C'est un programme complet et complexe qui nécessite l'envoie par mail du résumé santé quotidien ou du mois ou de l'année avec une sélection de champ précis dans chaque jour... etc vers le professionnel de santé traitant.
    J'ai donc eu le même problème que gael qui me faisait un pdf de 19mg (20 feuilles). Ta macro est absolument géniale, elle est souple et permet de créer un pdf de n'importe quel champ (ou groupe de champs) avec un choix de feuille. Alors vraiment merci. Le premier pdf est enfin parti.

Discussions similaires

  1. [XL-2010] macro zone d'impression
    Par duplaly dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2011, 17h57
  2. [XL-2000] Ouvrir et imprimer un pdf par macro
    Par lagondenoumea dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/12/2009, 06h57
  3. CControler Valeur de Zone combinée par macro
    Par Mimo37 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/08/2009, 14h50
  4. imprimer plusieures zones d'impression sur la même feuille
    Par gratesnif dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/10/2007, 15h05
  5. Réponses: 8
    Dernier message: 10/03/2006, 02h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo