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

  1. #1
    Membre à l'essai
    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
    Points : 15
    Points
    15
    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 é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, 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 à l'essai
    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
    Points : 15
    Points
    15
    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