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 :

Impression PDF d'une sélection de cellules


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut Impression PDF d'une sélection de cellules
    Bonjour à toutes et à tous,

    Je souhaiterais imprimer en PDF certaines cellules d'un document Excel.
    Après recherche et réflexion, je suis arrivé au code suivant, qui utilise PDFCreator :

    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
    Sub ToPdf()
     
    Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
    NomExcel = ThisWorkbook.Name
    NomPdf = Left(NomExcel, Len(NomExcel) - 4) & ".pdf"
     
    With pdfjob
        If .cstart("/NoProcessingAtStartup") = False Then
            MsgBox "Can't initialize PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutisaveDirectory") = 1
        .cOption("AutosaveDirectory") = ThisWorkbook.Path
        .cOption("AutosaveFilename") = NomPdf
        .cOption("AutosaveFormat") = 0
        .cClearCache
    End With
     
    Worksheets(3).Range("A2:M9,B35:E73").PrintOut copies:=1, ActivePrinter:="PDFCreator"
     
     
    Do Until pdfjob.cCountOfPrintjobs = 1
    DoEvents
    Loop
     
    pdfjob.cPrinterStop = False
    Do Until pdfjob.cCountOfPrintjobs = 0
    DoEvents
    Loop
     
    With pdfjob
        .cDefaultprinter = DefaultPrinter
        .cClearCache
        .cClose
    End With
     
    Set pdfjob = Nothing
     
    End Sub
    Cela fonctionne et crée un document PDF. La plage de cellule sélectionnée Range("A2:M9,B35:E73") sort cependant sur 2 feuilles différentes (une pour A2:M9, une autre pour B35:E73), alors qu'elle a la place d'être sur une même feuille.

    Je n'ai pas réussi à trouver le bout de code qui permettrait de restreindre l'impression à une seule page au lieu des 2 par défaut.

    J'en appelle à vos brillants
    Merci d'avance

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Il y a une option dans "mise en page" qui permet de faire tenir l'impression sur n feuilles en largeur et m feuilles en longueur. Un petit coup d'enregistreur de macro devrait te donner la propriété à utiliser.
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut
    Bonjour et merci de ta réponse !

    Effectivement, je connais cette fonction. Je ne m'explique pas pourquoi elle ne fonctionne pas dans ce cas : j'ai beau indiquer que je souhaite imprimer ma sélection sur 1 seule feuille, la sélection se partage sur 2 feuilles... rageant !

    Cela pourrait-il venir du fait que les 2 plages de cellules sélectionnées sont non jointes et que leur espacement est trop important ? Quelle solution pour contourner ce problème si c'est bien le cas ?

    Merci d'avance

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Je dirais que le mieux c'est que tu essaies manuellement pour trouver une solution qui marche avant de l'implémenter dans ta macro.
    Si tu sélectionnes directement A2:M73, ça ne fonctionne pas comme tu veux ?
    Si tu veux que les 2 plages soient collées, je pense qu'il faut d'abord copier sur une autre feuille pour avoir la mise en page que tu veux avant d'imprimer.
    « Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Janvier 2010
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 272
    Points : 222
    Points
    222
    Par défaut
    Je te remercie pour ces éléments d'info !
    Certaines cellules que je ne souhaite pas imprimer figurent dans la plage A2:M73, d'où ma volonté de sélectionner certaines plages..

    Merci !

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

Discussions similaires

  1. [XL-2010] Obtenir la valeur de l'une des cellules d'une sélection de cellule
    Par DeerData dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/04/2014, 11h21
  2. Impression d'une sélection de cellules en recto verso
    Par jaihna dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/11/2013, 10h58
  3. Réponses: 1
    Dernier message: 08/07/2013, 09h34
  4. [XL-2010] Appliquer une macro sur une sélection de cellule
    Par Fireblade51 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/04/2013, 10h59
  5. Réponses: 1
    Dernier message: 24/10/2008, 11h32

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