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 :

Imprimer plusieurs feuilles sur une page avec PDFCreator.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Par défaut Imprimer plusieurs feuilles sur une page avec PDFCreator.
    Bonjour,
    J'ai un petit soucis avec la macro permettant d'imprimer automatiquement un fichier pdf.
    J'arrive à imprimer mon document dans un fichier pdf sans soucis, par contre je ne trouve pas l'option me permettant d'imprimer 2 pages sur une feuille.
    Pouvez vous m'aider?
    Voici la macro que j’utilise :
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    Option Compare Database
    Option Explicit
     
    ' Ne pas oublier de cocher la bibliothèqe PDFCreator
    ' dans le menu Outils / Références de Visual Basic Editor
     
    ' API Windows pour faire une temporisation en millisecondes
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    ' Constantes pour les temporisations
    Private Const maxTime = 10    ' en secondes
    Private Const sleepTime = 250 ' en millisecondes
     
    ' ---
    ' IMPRESSION D'UN ETAT EN PDF
    ' ---
    ' Entrée : strReportName <- Nom de l'état à imprimer en PDF
    '          strWhere      <- Clause WHERE filtrant l'état (facultatif)
    '          strPDFName    <- Nom du fichier PDF à générer (facultatif)
    '          strDirectory  <- Chemin de stockage du fichier PDF (facultatif)
    '
    Public Sub SaveAsPDF( _
      ByVal strReportName As String, _
      Optional ByVal strWhere As String = "", _
      Optional ByVal strPDFName As String = "", _
      Optional ByVal strDirectory As String = "")
     
      ' Quelques variables...
      Dim pdfc As PDFCreator.clsPDFCreator
      Dim DefaultPrinter As String
      Dim c As Long
      Dim OutputFilename As String
     
      ' Instancier un nouvel objet PDFCreator
      Set pdfc = New clsPDFCreator
     
     ' Paramétrer l'objet PDFCreator
      With pdfc
        .cStart "/NoProcessingAtStartup"
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
     
        ' Chemin de destination
        ' Par défaut : dossier 'Mes documents' de l'utilisateur
        If strDirectory = "" Then
          strDirectory = Environ("USERPROFILE") & "\Mes documents\"
        End If
        .cOption("AutosaveDirectory") = strDirectory
     
        ' Nom du fichier PDF à générer
        .cOption("AutosaveFilename") = _
          IIf(strPDFName = "", strReportName, strPDFName)
     
        ' Format de sauvegarde (0 = PDF)
        .cOption("AutosaveFormat") = 0
     
        ' Mémoriser l'imprimante par défaut
        ' et définir PDFCreator à la place
        DefaultPrinter = .cDefaultPrinter
        .cDefaultPrinter = "PDFCreator"
        .cClearCache
     
        ' Imprimer l'état
        DoCmd.OpenReport strReportName, acViewNormal, , strWhere
        .cPrinterStop = False
      End With
     
      ' Temporisation
      c = 0
      Do While (pdfc.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime))
        c = c + 1
        Sleep 200
      Loop
     
      ' Nom du fichier PDF produit
      OutputFilename = pdfc.cOutputFilename
     
      ' Réinstaller l'imprimante d'origine
      With pdfc
        .cDefaultPrinter = DefaultPrinter
        Sleep 200
        .cClose
      End With
     
      ' Attendre jusqu'à ce que PDFCreator soit supprimé de la mémoire
      Sleep 2000
     
      ' Vérifier si le fichier a été créé
      If OutputFilename = "" Then
        MsgBox "Création du fichier PDF." & vbCrLf & vbCrLf & _
          "Une erreur s'est produite : temps écoulé !", vbExclamation + vbSystemModal
      End If
    End Sub
    Par avance merci.

  2. #2
    Expert confirmé
    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
    Par défaut
    Salut, si tu as Office 2007 SP2 ce dernier intègre en natif le format PDF et donc pas besoin de PdfCreator ou autre

    S'il s'agit d'imprimer 2 feuilles ou plus d'Excel dans un seul fichier voir sur http://www.developpez.net/forums/d43...bat-distiller/ en bas du Post# 1 dans Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 17
    Par défaut
    Salut kiki29,

    Je suis au courant de cette solution intégré, mais en fait plusieurs utilisateurs vont utilisé ce fichier excel à terme et tous n'ont pas la version 2007, du coup cette solution ne me permet pas d'arriver à mes fins. Merci quand même.

    En fait je veux faire une impression type "livret".

Discussions similaires

  1. [XL-2007] Macro VBA pour imprimer plusieurs onglets sur une feuille recto verso
    Par oekoniko dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2014, 15h24
  2. Gestion de plusieurs applications sur une page avec Frame
    Par Benjea dans le forum Webdesign & Ergonomie
    Réponses: 0
    Dernier message: 27/09/2012, 22h26
  3. [XL-2010] Imprimer 4 feuilles sur une seule page
    Par patch2007 dans le forum Excel
    Réponses: 5
    Dernier message: 03/03/2012, 19h51
  4. [XI] obtenir plusieurs colonnes sur une page
    Par Aurazed dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 12/06/2007, 15h10
  5. Réponses: 6
    Dernier message: 24/05/2007, 10h55

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