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

Excel Discussion :

Comprendre une impression PDF Creator [XL-2003]


Sujet :

Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Points : 46
    Points
    46
    Par défaut Comprendre une impression PDF Creator
    Bonjour,

    grâce aux divers fils de discussion et surtout grâce à kiki29, je me suis fait une petite macro sous Exel pour imprimer l'onglet en pdf.
    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
     
    Sub Impression()
        Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
        NomPdf = Onglet & ".pdf"
        With ActiveSheet.PageSetup
            .PrintArea = "$A$1:$G$46"
            .Order = xlDownThenOver
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
        End With
     
        With pdfjob
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
                Exit Sub
            End If
     
            .cOption("UseAutosave") = 1
            .cOption("UseAutisaveDirectory") = 1
            .cOption("AutosaveDirectory") = ThisWorkbook.Path & "\Factures\"
            .cOption("AutosaveFilename") = NomPdf
            .cOption("AutosaveFormat") = 0
            .cClearCache
        End With
     
         ActiveSheet.PrintOut Copies:=1, ActivePrinter:="PDFCreator sur Ne00:"
     
         Onglet = Onglet
     
        Do Until pdfjob.cCountOfPrintjobs = 1
            DoEvents
        Loop
        pdfjob.cPrinterStop = False
     
        Do Until pdfjob.cCountOfPrintjobs = 0
            DoEvents
        Loop
     
        pdfjob.cClose
        Set pdfjob = Nothing
     
    End Sub
    Ca marche très bien... mais je comprends pas tout

    d'où ma petite question : pourquoi faut-il mettre les 2 loops

    Voilà, si quelqu'un voulait bien éclairer ma lanterne, merci d'avance

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Stutak Voir le message
    pourquoi faut-il mettre les 2 loops
    DoEvents est une fonction qui temporise la macro pour donner du temps à une application externe de se dérouler.
    Dans ce cas, ça permet de ne faire le close que lorsque les jobs de la création de PDF sont terminés.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Parfait, j'ai compris
    Merci pour cette explication

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, d'une manière générale il faut donné du temps au temps, un système n'aime pas travailler en apnée.

    Ici précédent le "pdfjob.cPrinterStop = False" qui lance l'impression pour qu'il y ait qqch dans la file d'attente, puis ensuite ne clôturer les opérations qu'une fois la file d'attente vide.

    Cela aussi car personne ne peut connaitre les laps de temps nécessaires pour ces opérations et qu'elles ne deviennent bloquantes pour le système.

    DoEvents

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lancer une impression PDF en PHP
    Par urashima82 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 14/02/2013, 15h36
  2. Comprendre les impression PDF - VF31 et V/40
    Par Guillaume 0 dans le forum SAP
    Réponses: 0
    Dernier message: 21/09/2012, 16h10
  3. Impression pdf creator
    Par lesultan2007 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/04/2012, 13h53
  4. [XL-2003] Impression PDF creator
    Par dlight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/02/2011, 04h45
  5. [WD14] Plantage lors d'une impression PDF
    Par cedric.falez dans le forum WinDev
    Réponses: 6
    Dernier message: 23/03/2010, 18h15

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