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

QlikView Discussion :

Imprimer des rapports en pdf selon une selection


Sujet :

QlikView

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Imprimer des rapports en pdf selon une selection
    Bonjour,

    J'ai crée une macro sur mon QV qui me permet d'imprimer un rapport par sélection (par nom) en PDf à l'aide de Bullzip.
    Cependant, aucune impression ne se fait lorsqu'il y a qu'une sélection de faite dans la liste de nom, ou alors, si plusieurs noms sont sélectionnés, le dernier ne s'imprime jamais (si 4 Noms sélectionnés, seuls les 3 premiers s'impriment), d'après ce que j'ai pu comprendre, pour la dernière sélection, aucun nom n'est généré.

    Voici la macro utilisée,
    Code VB : 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
     
    Sub ExportAndMail
     
         Set val=ActiveDocument.Fields("Nom").GetPossibleValues(200)
     
                    For i = 0 to val.count-1
     
                    set Nom = val.Item(i)
    	ActiveDocument.Fields("Nom").Select Nom.text     
     
        ActiveDocument.PrintReport("RP02"), "Bullzip PDF Printer", false  'Printreport
        MyPrintPDFWithBullZip(reportFile) 'Call pdf printer
        reportFile = "C:\Documents and Settings\User\Bureau\" & Nom.text &".pdf"  'Setting outputname
     
     
        Next 
     
     End sub
     
    FUNCTION MyPrintPDFWithBullZip (pdfOutputFile)
        set obj = CreateObject("Bullzip.PDFPrinterSettings")
            obj.SetValue "Output" , pdfOutputFile
       		obj.SetValue "ConfirmOverwrite", "no"
        	obj.SetValue "ShowSaveAS", "never"
        	obj.SetValue "ShowSettings", "never"
        	obj.SetValue "ShowPDF", "no"
        	obj.SetValue "RememberLastFileName", "no"
        	obj.SetValue "RememberLastFolderName", "no"
        	obj.SetValue "ShowProgressFinished", "no"
        	obj.SetValue "ShowProgress", "no"
        	obj.WriteSettings True
     
    END FUNCTION

    j'ai essayé de modifier le i=0 en i=1, et le val.count-1 en val.count mais le "set Nom = val.Item(i)" ne passe plus avec le message suivant "Argument ou appel de procédure incorrect"... Pourtant je pense que le problème vient de là...

    Si quelqu'un pouvait me décoincer...
    Je vous en remercie !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Heu ... Tu n'aurais pas mal recopié ta macro ?
    En lignes 11,12 et 13, tu imprimes puis tu initialise Bullzip, puis tu change le nom du fichier.

    Essaie dans l'ordre inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    reportFile = "C:\Documents and Settings\User\Bureau\" & Nom.text &".pdf"  'Setting outputname
    MyPrintPDFWithBullZip(reportFile) 'Call pdf printer
    ActiveDocument.PrintReport("RP02"), "Bullzip PDF Printer", false  'Printreport

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    Merci de ta réponse, mais cela ne fonctionne pas. J'avais lu dans un forum que les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyPrintPDFWithBullZip(reportFile) 'Call pdf printer
    reportFile = "C:\Documents and Settings\User\Bureau\" & Nom.text &".pdf"  'Setting outputname
    étaient inversées exprès, cela permet d'avoir le bon nom du fichier correspondant au nom dans le rapport. En inversant, cela décale tout.

    En plus, de mettre cette ligne en dernier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.PrintReport("RP02"), "Bullzip PDF Printer", false  'Printreport .
    fait encore plus buggé la macro, j'ai encore moins d'impression qu'avant...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    La je n'y comprends plus rien !

    Essaie d'insérer une ligne msgbox nom.text, un ligne avec msgbox var.item(i).text

    Sélectionne 4 noms et regarde le second PDF généré. Est-ce qu'il contient le graphique pour le bon nom ?

  5. #5
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Ce qui est sur, c'est que la boucle initiale est bonne :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ExportAndMail
     
        Set val=ActiveDocument.Fields("Nom").GetPossibleValues(200)
     
        For i = 0 to val.count-1
     
            set Nom = val.Item(i)
    	    ActiveDocument.Fields("Nom").Select Nom.text
     	    msgbox Nom.text
        Next 
     
    End sub


    Je sais que j'ai eu pas mal de problèmes avec des imprimantes PDF qui ne prenaient pas en compte les paramétrages demandés (qui affichaient par exemple la popup "save as").

    De plus, il faut attendre un peu avant de lancer l'impression, que le document QlikView rende la main.

    Pour finir, j'utilise toujours l'imprimante PDF "QlikViewPDF" dont je modifie les paramètres directement dans la base de registre.

    J'utilise donc
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sub ExportPDF
        ActiveDocument.GetApplication.WaitForIdle
     
        'Export PDF
        set WSHShell = CreateObject("WScript.Shell")
        WSHShell.RegWrite "HKCU\Software\QlikViewPDF\OutputFile", "C:\tmp\file.pdf", "REG_SZ"
        WSHShell.RegWrite "HKCU\Software\QlikViewPDF\BypassSaveAs", "1", "REG_SZ"
     
        ActiveDocument.PrintReport "RP01", "QlikViewPDF", false
        set WSHShell = nothing
    end sub

    Vous pouvez donc tenter de rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.GetApplication.WaitForIdle
    dans votre code juste avant l'appel à l'impression, pour laisser QV terminer sa sélection avant que l'impression du rapport soit effectuée.
    Il est illogique de définir le nom du fichier APRES l'appel à l'impression. Il vaut mieux donc comprendre pourquoi il y a ce comportement (et le corriger), plutôt qu'exploiter cet effet de bord.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci à tous les deux, vous aviez raison. J'ai modifié la macro qui donne maintenant :

    Code VB : 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
    48
    Sub ExportAndMail
    'ActiveDocument.reload
     
    Set val=ActiveDocument.Fields("Nom").GetPossibleValues(200)
     
    'msgbox(val.count)
     
    For i = 0 to val.count-1
     
    set Nom = val.item(i)
    'Msgbox(i)
    'Msgbox(Nom.text)
     
    ActiveDocument.Fields("Nom").Select Nom.text 
     
    ActiveDocument.PrintReport("RP02"), "Bullzip PDF Printer", false 'Printreport
     
    reportFile = "C:\Documents and Settings\User\Bureau\" & Nom.text &".pdf" 'Setting outputname
    'msgbox(reportFile)
     
    ActiveDocument.GetApplication.WaitForIdle
    MyPrintPDFWithBullZip(reportFile) 'Call pdf printer
     
     
     
    Next 
     
    ' mailrapport()
    ' ActiveDocument.GetApplication.Quit
     
     
     
    End sub
     
    FUNCTION MyPrintPDFWithBullZip (pdfOutputFile)
    set obj = CreateObject("Bullzip.PDFPrinterSettings")
    obj.SetValue "Output" , pdfOutputFile
    obj.SetValue "ConfirmOverwrite", "no"
    obj.SetValue "ShowSaveAS", "never"
    obj.SetValue "ShowSettings", "never"
    obj.SetValue "ShowPDF", "no"
    obj.SetValue "RememberLastFileName", "no"
    obj.SetValue "RememberLastFolderName", "no"
    obj.SetValue "ShowProgressFinished", "no"
    obj.SetValue "ShowProgress", "no"
    obj.WriteSettings True
     
    END FUNCTION

    et elle marche ! Merci beaucoup !

  7. #7
    Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 46
    Points
    46
    Par défaut Imprimer des rapports en pdf selon une selection
    bonjour,
    j'ai utilisé le même script, seulement lors de l’exécution de la macro
    il s'arrête à la ligne :
    ActiveDocument.PrintReport("RP02"), "Bullzip PDF Printer", false
    sachant que je suis en 64 bits.
    et le client avec la quel j’accède win 7
    est ce qu'il y'a quelqu'un qui peut m'aider
    merci bcp

  8. #8
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Dans cette macro, RP02 est le nom du graphique et "Bullzip PDF Printer" le nom de l'imprimante virtuelle qui génère le PDF.
    As tu remplacé ces valeurs par les tiennes ?
    Quel est le message d'erreur ?

  9. #9
    Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 46
    Points
    46
    Par défaut Imprimer des rapports en pdf selon une selection
    bonjour,
    voila ce que je voulais faire:
    J'ai un document QW, avec 10 feuilles, en sélectionnant le nom d'un chargé commercial je veux imprimer toutes les feuilles du document.
    le nom de l'imprimante est bien Bullzip PDF Printer.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Tu peux remplacer le activedocument.printreport("RP02") par un activedocument.printallsheets(true) pour imprimer toutes les feuilles.
    true indique d'imprimer avec les backgrounds.

    Sinon, tu peux utiliser plusieurs printreport("xxxxx") en remplacant le nom du graphique ...

  11. #11
    Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 46
    Points
    46
    Par défaut Imprimer des rapports en pdf selon une selection
    bonjour,
    je vous remercie pour votre réponse, voila le code de la macro comment il a été implémenté:


    Sub ExportAndMail
    'ActiveDocument.reload

    Set val=ActiveDocument.Fields("NOM_CHARGE").GetPossibleValues(200)

    'msgbox(val.count)

    For i = 0 to val.count-1

    set Nom = val.item(i)
    'Msgbox(i)
    'Msgbox(Nom.text)


    ActiveDocument.Fields("NOM_CHARGE").Select Nom.text

    ActiveDocument.PrintReport("SH01"),"Bullzip PDF Printer",false '' "Bullzip PDF Printer" ', false 'Printreport
    ''ActiveDocument.PrintAllsheets(true)
    reportFile = "d:\donnees\" & Nom.text &".pdf" 'Setting outputname
    'msgbox(reportFile)

    ActiveDocument.GetApplication.WaitForIdle
    MyPrintPDFWithBullZip(reportFile) 'Call pdf printer



    Next

    ' mailrapport()
    ' ActiveDocument.GetApplication.Quit



    End sub

    'Bullzip.PdfSettings

    FUNCTION MyPrintPDFWithBullZip (pdfOutputFile)
    'set obj=CreateObject("Bullzip.PdfSettings")
    set obj = CreateObject("Bullzip.PDFPrinterSettings")
    obj.PrinterName = "Bullzip PDF Printer"
    obj.SetValue "Output" , pdfOutputFile
    obj.SetValue "ConfirmOverwrite", "no"
    obj.SetValue "ShowSaveAS", "never"
    obj.SetValue "ShowSettings", "never"
    obj.SetValue "ShowPDF", "no"
    obj.SetValue "RememberLastFileName", "no"
    obj.SetValue "RememberLastFolderName", "no"
    obj.SetValue "ShowProgressFinished", "no"
    obj.SetValue "ShowProgress", "no"
    obj.WriteSettings True

    END FUNCTION

    le but comme je l'ai précisé est d'imprimer toutes les feuilles dans un seul document.
    d'ailleurs j'ai voulu forcer le nom du document avec l'instruction reportFile = "d:\donnees\" & Nom.text &".pdf"
    mais ça ne marche pas

  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    PrintReport imprime un état et non une feuille directement.
    Il faut créer un rapport dans l'onglet Rapport.
    Par drag/drop, vous prenez les objets affichés et vous les mettez sur l'état.
    Vous pouvez aussi ajouter des textes qui ne seront que sur les rapports.
    Vous pouvez ajouter n pages à votre rapport, chacune reprenant les éléments des différentes feuilles.

  13. #13
    Membre du Club
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Mars 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 36
    Points : 46
    Points
    46
    Par défaut Imprimer des rapports en pdf selon une selection
    merci beaucoup

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

Discussions similaires

  1. cree une page pdf avec une select de feuil excel
    Par pikamo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/07/2011, 13h18
  2. Réponses: 1
    Dernier message: 03/12/2009, 14h37
  3. imprimer des données différentes d'apres une cellule
    Par Tom75007 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/05/2009, 14h24
  4. Réponses: 3
    Dernier message: 14/01/2009, 10h35
  5. Réponses: 11
    Dernier message: 23/03/2007, 19h38

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