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

Macros et VBA Excel Discussion :

Modification des option d'impression d'un pdf VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut Modification des option d'impression d'un pdf VBA
    Bonjour, je suis arrivé a faire une fonction vba pour imprimer un pdf, j'ai besoin maintenant de 3 choses :
    -imprimer en recto/verso
    -selectionner les pages a imprimer
    -Pouvoir imprimer en A4/A3

    Je ne sais pas du tout comment faire, j'ai cherché sur le forum mais j'ai rien trouvé de fonctionnel. Les sendkeys n'ont pas l'ai de fonctionner.
    j'ai parametré les senkeys pour faire comme l'utilisateur devrait faire sur la fenêtre d'impression mais la fenêtre n'a même pas l'air de s'ouvrir. Le pdf s'ouvre et se referme sans imprimer.

    Je vous mets le script :

    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
     
     
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
     
    Function imprTst(sPages As String, sFichier As String)
    Dim sAcro As String
    Dim Clip As MSForms.DataObject
     
     
       sAcro = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
        ShellExecute 0, vbNullString, sFichier, vbNullString, vbNullString, vbNormalFocus
        Application.Wait (Now + TimeValue("00:00:03"))
       SendKeys "^p", True
        SendKeys "%g", True
        SendKeys "{TAB}", True
        SendKeys sPages, True
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "{TAB}", True
        SendKeys "v", True
        SendKeys "{ENTER}", True
     
     
        KillAcrobatReader
        Set Clip = Nothing
    End Function
     
    Private Sub KillAcrobatReader()
        Shell "Taskkill /im AcroRd32.exe /f", 0
    End Sub
    Voila, si quelqu'un a une piste pour le faire je suis preneur.

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2021
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2021
    Messages : 334
    Par défaut c'est bon j'ai trouvé
    Bon j'ai trouvé ou ça allait pas, c'est le shellexecute qui était mal renseigné voila la fonction pour imprimer recto/verso et sur un nombre de page qu'il faut spécifier comme argument dans la macro qui appellera la fonction. Il y a des tempo pour attendre l'ouverture du fichier, l'ouverture de l'interface impression et l'attente de la progression de l'impression. vous pouvez les ajuster en fonction de vos machines et fichiers.

    Pour l'impression A3 je pense que ça se gère de la même manière avec les sendkeys

    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
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Option Explicit
     
    Function imprTst(sPages As String, sFichier As String)
    Dim sAcro As String
     
        sAcro = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
        ShellExecute 0, "open", sFichier, "", "", 0
        Application.Wait (Now + TimeValue("00:00:03"))
        Application.SendKeys "^p", True
        Application.Wait (Now + TimeValue("00:00:02"))
        Application.SendKeys "%g", True
        Application.SendKeys "{TAB}", True
        Application.SendKeys sPages, True
        Application.SendKeys "{TAB}", True
        Application.SendKeys "{TAB}", True
        Application.SendKeys "{TAB}", True
        Application.SendKeys "{TAB}", True
        Application.SendKeys "v", True
        Application.SendKeys "{ENTER}", True
        Application.Wait (Now + TimeValue("00:00:10"))
     
     
        Shell "Taskkill /im AcroRd32.exe /f", 0
     
    End Function
    La fonction est simple mais elle prend un peu de temps a s’exécuter en raison des sendkeys, puis elle est visible par l'utilisateur, c'est pas fou mais c'est tout ce que j'ai trouvé pour utiliser la version gratuite de acrobat reader.

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

Discussions similaires

  1. [XL-2003] Options d'impression d'un pdf via le shell
    Par mjcom dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/07/2011, 19h17
  2. modification des marges d'impression
    Par ruru9 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 19/09/2008, 14h23
  3. Modification des options de la table des matières
    Par yobbas dans le forum Mise en forme
    Réponses: 6
    Dernier message: 01/06/2006, 08h59
  4. Modification des options de Dbgrid
    Par kitiss dans le forum Composants VCL
    Réponses: 1
    Dernier message: 28/12/2005, 16h52

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