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

VBA Access Discussion :

Rapports automatiquement enregistrés pdf


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut Rapports automatiquement enregistrés pdf
    Bonjour,

    je tente d'utiliser la méthode décrite sur : http://www.mvps.org/access/reports/rpt0011.htm
    qui consiste à :
    -changer l'imprimante par défaut et la mettre sur PDF Writter
    -changer le nom du fichier de destination
    -ouvrir le rapport en acNormal pour l'imprimer
    -redéfinir l'ancienne imprimante par défaut

    le script proposé sur le site semble bien me mettre l'imprimante par défaut car quand j'éxecute le code pas a pas, juste avant d'ouvrir le rapport, mon imprimante par défaut est bien PDF Writer dans la fenetre Faxes et Imprimantes du panneau de config, cependant access ne la voit pas comme par défaut, il ne voit pas le changement

    quand je change manuellement ( en cliquant sur l'imprimante --> définir par défaut ) là access me la reconnait bien comme imprimante par défaut



    le script proposé marche donc a moitié, est ce que quelqu'un a rencontré ce problème ou utilisez vous une autre méthode pour sauvegarder vos rapports ?


    Merci
    Diffy

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut elements de réponse
    après cette commande :
    mon imprimante par défaut est bien changée ( je le vois dans le gestionnaire d'imprimantes et si j'ouvre un autre logiciel elle est définie par défaut )

    seulement access ( qui viens d'executer ce code ) ne voit pas le changement.
    n'y a t il pas queleque chose genre un flag a envoyer a tous les processus en cours pour leur indiquer qu'on a changé d'imprimante par défaut ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut une solution, mais qui n'est pas optimale :
    en utilisant les fonctions spécifiques dans access 2003 on peut redéfinir l'imprimante que l'on veut utiliser.
    maintenant je cherche comment définir le nom de fichier de destination automatiquement sans qu'il me le demande dans une fenetre


    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
     
    strPrinter = Application.Printer.deviceName
     
    ' Find the index number of the default printer
    i = 0
    Do While Application.Printers(i).deviceName <> strPrinter
    i = i + 1
    Loop
    ' i now equals the index of the default printer
     
    Dim newPrinter
    newPrinter = "Adobe PDF"
     
    ' Find the index number of the Adobe printer
    j = 0
    Do While Application.Printers(j).deviceName <> newPrinter
    j = j + 1
    Loop
    ' i now equals the index of the Adobe printer
     
    Set Application.Printer = Application.Printers(j)
    DoCmd.OpenReport "Price List", acNormal
    Set Application.Printer = Application.Printers(i)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    pour éviter qu'il demande le nom de fichier il suffit de faire
    cliquer sur l'imprimante adobe PDF --> Printing preferences --> Enlever la petite coche dans Prompt for file name

    pour redéfinir le nom cela semple plus complexe
    en fait quand on regarde le printer port de adobe dans le panneau de configuration il est défini vers un dossier,
    quand on regarde son port avec des fonctions VBA il est défini à Ne00: et ne change pas quelque soit le dossier de destination

    En fait j'ai trouvé un élément de réponse a cette adresse :
    http://newsgroups.derkeiler.com/Arch.../msg00053.html


    L'imprimante virtuelle Adobe PDF redirige un fichier .ps a travers un pipe vers un programme nommé Distiller qui lui se charge de le transformer en pdf

    alors il semble que la manière de faire soit d'enregistrer le fichier au format .ps et de le transformer en pdf par la suite avec Distiller.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut marre de adobe pdf --> je passe a ghost script
    encore une fois les outils libres me semblent plus performant et simples d'utilisation que les outils proprios.

    J'ai installé ghostscript et je vais l'utiliser pour convertir mes fichiers .ps en .pdf et voila

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 23
    Points : 23
    Points
    23
    Par défaut Solution qui fonctionne avec Access 2003
    Installer PDFCreator

    avant de compiler le code il fait ajouter pdf creator dans les references de visual basic

    et utiliser ce bout de code :
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Private Sub test()
    'Author       : Ken Puls ( www.excelguru.ca)
    'Macro Purpose: Print to PDF file using PDFCreator
    '   (Download from http://sourceforge.net/projects/pdfcreator/ )
    '   Designed for early bind, set reference to PDFCreator
     
        Dim pdfjob As PDFCreator.clsPDFCreator
        Dim sPDFName As String
        Dim sPDFPath As String
        Dim sPrinterName As String
        Dim sReportName As String
        Dim lPrinters As Long
        Dim lPrinterCurrent As Long
        Dim lPrinterPDF As Long
        Dim prtDefault As Printer
     
        '/// Change the report and output file name here! ///
        sReportName = "Price List"
        sPDFName = sReportName & ".pdf"
        sPDFPath = Application.CurrentProject.path & "\"
     
        'Resolve index number of printers to allow changing and preserving
        sPrinterName = Application.Printer.DeviceName
        On Error Resume Next
        For lPrinters = 0 To Application.Printers.count
            Set Application.Printer = Application.Printers(lPrinters)
     
            Set prtDefault = Application.Printer
            Select Case prtDefault.DeviceName
                Case Is = sPrinterName
                    lPrinterCurrent = lPrinters
                Case Is = "PDFCreator"
                    lPrinterPDF = lPrinters
                Case Else
                    'do nothing
            End Select
        Next lPrinters
        On Error GoTo 0
     
        'Change the default printer
        Set Application.Printer = Application.Printers(lPrinterPDF)
        Set prtDefault = Application.Printer
     
        'Start PFF Creator
        Set pdfjob = New PDFCreator.clsPDFCreator
        With pdfjob
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Can't initialize PDFCreator.", vbCritical + _
                        vbOKOnly, "PrtPDFCreator"
                Exit Sub
            End If
            .cOption("UseAutosave") = 1
            .cOption("UseAutosaveDirectory") = 1
            .cOption("AutosaveDirectory") = sPDFPath
            .cOption("AutosaveFilename") = sPDFName
            .cOption("AutosaveFormat") = 0    ' 0 = PDF
            .cClearCache
        End With
     
        'Print the document to PDF
        DoCmd.OpenReport (sReportName), acViewNormal
     
     
        'Wait until the print job has entered the print queue
        Do Until pdfjob.cCountOfPrintjobs = 1
            DoEvents
        Loop
        pdfjob.cPrinterStop = False
     
        'Wait until PDF creator is finished then release the objects
        Do Until pdfjob.cCountOfPrintjobs = 0
            DoEvents
        Loop
        pdfjob.cClose
     
        'Reset the (original) default printer and release PDF Creator
        Set Application.Printer = Application.Printers(lPrinterCurrent)
        Set pdfjob = Nothing
     
     
     
     
    End Sub

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

Discussions similaires

  1. [IP2010] Enregistrement automatique en PDF
    Par Apefu dans le forum InfoPath
    Réponses: 1
    Dernier message: 08/02/2013, 09h55
  2. Impression automatique de pdf
    Par PrinceMaster77 dans le forum ASP
    Réponses: 10
    Dernier message: 25/03/2008, 19h14
  3. Réponses: 23
    Dernier message: 16/05/2006, 17h38
  4. Etat par rapport à un enregistrement actif
    Par yoyo30 dans le forum Access
    Réponses: 2
    Dernier message: 20/10/2005, 16h05

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