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 classeur excel 2010 en pdf


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut Imprimer classeur excel 2010 en pdf
    Bonjour,

    J'ai essayé de construire une macro sur excel 2010 pour imprimer l'ensemble des onglets de excel en pdf.
    J'ai trouvé la macro suivante. Cependant développeur ne la reconnait pas en tant que macro.
    Pourriez vous svp m'indiquer ce qu'il manque?
    Par avance merci
    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
    Dim pdfjob
    Dim NomExcel, NomPdf, DefaultPrinter
    Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
    Dim Chemin As String, Fich As String, rep
    Chemin = "c:\temp"
    Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(ActiveWorkbook.Name) & ".pdf"
    rep = Dir(Chemin & "\" & Fich)
     
    If rep = "" Then
        MsgBox "le fichier n'existe pas création du fichier PDFCreator"
    Impression:
        With pdfjob
            If .cStart("/NoProcessingAtStartup") = False Then
                MsgBox "Impossible d'initialiser PDFCreator.", vbCritical + vbOKOnly, "PrtPDFCreator"
                'GoTo Error
                Exit Sub
            End If
                .cOption("UseAutosave") = 1
                .cOption("UseAutisaveDirectory") = 1
                .cOption("AutosaveDirectory") = Chemin ' chemin enregistrement du classeur actuel
                .cOption("AutosaveFilename") = Fich
                .cOption("AutosaveFormat") = 0
                .cClearCache
        End With
     
        'ThisWorkbook.PrintOut Copies:=1, ActivePrinter:="PDFCreator" 'imprime le classeur entier
        ThisWorkbook.Sheets("Feuil1").PrintOut Copies:=1, ActivePrinter:="PDFCreator" 'imprime l'onglet pour mise en page définir la partie à imprimer
        'Selection.PrintOut Copies:=1, ActivePrinter:="PDFCreator" 'imprime la selection
     
        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
     
    Else
        réponse = MsgBox("le fichier existe voulez-vous le remplacer ?", vbYesNo)
        If réponse = vbYes Then
            MsgBox "Remplacement du fichier existant"
            GoTo Impression
        Else
            MsgBox "Sortie de la procédure"
        End If
    End If

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu es en XL2010

    Essaies cette petite procédure (à adapter le nom complet du fichier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub PDFSave()
    Dim Fichier As String
     
    Fichier = "C:\Users\user\Desktop\Classeur2.pdf"    'à adapter
    ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier
    End Sub

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut Sauvegarde PDF et impression
    J'ai coché dans Visual basic la case PDFCREATOR et utilisé le code macro que vous m'avez communiqué et cela fonctionne.

    Cependant je souhaiterais avoir en preview le pdf et en même temps que l'impression soit lancée.

    Merci par avance

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Remarque que sous XL 2010, tu n'as pas besoin de pdfcreator

    Le code précédent peut être amélioré pour donner la possibilité à l'utilisateur le choix d'écraser le fichier pdf existant sous le même nom avant d'enregistrer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub PDFSave()
    Dim Fichier As String
    Dim Cancel As Boolean
     
    Fichier = ThisWorkbook.FullName
    Fichier = Left(Fichier, InStrRev(Fichier, ".")) & "pdf"
    If Dir(Fichier) <> "" Then Cancel = MsgBox("Le fichier existe déjà! Voulez vous le remplacer?", vbOKCancel) = vbCancel
    If Not Cancel Then ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier, OpenAfterPublish:=True
    End Sub

    Sélectionne ExportAsFixedFormat et appelle l'aide (F1) pour étudier tous les paramètres de la méthode.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 26
    Par défaut
    Merci beaucoup.
    Serait il possible après avoir enregistrer en pdf avec
    1. la date et heure
    2. d'avoir la preview en pdf
    3. et de lancer ensuite l'impression

    Merci pour votre aide

    Bonjour
    J'ai essayé de modifier la macro que vous m'avez transmise pour afficher la date et l'heure lors de l'enregistrement

    J'ai 2 pblms :

    1. Le fichier se sauvegarde avec .xslm.pdf Or je souhaiterais ne plus faire apparaitre le .xlsm
    2.la date et l'heure ne s'affiche pas

    Merci par avance pour votre aide

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Remplace la ligne correspondante par celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = Left(Fichier, InStrRev(Fichier, ".") - 1) & "_" & Format(Now, "yyyymmdd-hhnn") & ".pdf"

Discussions similaires

  1. [XL-2010] Liaisons entre classeurs excel 2010
    Par oli.becam dans le forum Excel
    Réponses: 2
    Dernier message: 16/05/2014, 11h21
  2. Réponses: 1
    Dernier message: 29/01/2013, 11h42
  3. [XL-2003] PDF dans USF stocké sur classeur excel
    Par tomo80 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2011, 12h51
  4. classeur Excel vers PDF
    Par Nako_lito dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/09/2010, 18h19

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