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 :

Macro SIMPLE pour enregistrer une FEUILLE en PDF? [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2014
    Messages : 21
    Points : 0
    Points
    0
    Par défaut Macro SIMPLE pour enregistrer une FEUILLE en PDF?
    Bonjour!
    J'ai parcouru des centaines de discussions ici et ailleurs, mais je n'arrive pas à mettre au point une macro SIMPLE qui permette d'enregistrer une feuille (et non un classeur), en entier (et non une plage de cellule), sur le bureau, en PDF.
    Pouvez-vous m'aider? Est-ce qu'il existe une macro unique, compatible avec Excel 2003 (que j'ai) mais qui fonctionne aussi avec les autres versions d'excel?

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    Bonjour,

    c'est possible à partir des versions 2007 et supérieures …

    Sinon il faut utiliser un utilitaire, voir dans le sous-forum d'Excel intitulé Contribuez l'excellent travail de kiki29.

  3. #3
    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 272
    Points
    11 272
    Par défaut
    Salut, il te faudra installer PDFCreator 1.7.3 ( gratuit )

    Voir ici pour une liste à jour devant permettre de naviguer dans le bazar

    Le code devant être adapté à ton contexte se trouvant ici et adapté ci-dessous :

    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
    Option Explicit
     
    Private Function GetPrinterWithPort(ByVal sPrinterName As String) As String
    Dim Reg As Variant, oReg As Object, Str As Variant
    Dim Ar() As Variant, RegValue As Variant
    Const HKEY_CURRENT_USER = &H80000001
        Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
        With oReg
            .enumvalues HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Str, Ar
            .getstringvalue HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Reg, RegValue
            .getstringvalue HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", sPrinterName, RegValue
        End With
        GetPrinterWithPort = sPrinterName & " sur " & Mid$(RegValue, InStr(RegValue, ",") + 1)
    End Function
     
    Sub TstPdfCreator()
    Dim sPrinter As String
    Dim JobPDF As Object
    Dim sNomPDF As String
    Dim sCheminPDF As String
    Dim Ar() As String, Cpt As Long, i As Long
     
        sNomPDF = "Essai"
        sCheminPDF = ThisWorkbook.Path & "\"
     
        Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")
        JobPDF.cStart "/NoProcessingAtStartup"
        sPrinter = GetPrinterWithPort("PDFCreator")
     
        With JobPDF
            .cOption("UseAutosave") = 1
            .cOption("UseAutosaveDirectory") = 1
            .cOption("AutosaveDirectory") = sCheminPDF
            .cOption("AutosaveFilename") = sNomPDF
     
            '   0,9,10 PDF,1 PNG,2 JPEG,3 BMP,4 PCX
            '   5 TIFF,6 PS,7 EPS,8 TXT
            '   11 PSD,12 PCL,13 RAW,14 SVG
            .cOption("AutosaveFormat") = 0
            .cOption("PDFGeneralAutorotate") = 0
            .cClearCache
        End With
     
        ' Pour n'imprimer que certaines feuilles du classeur
        Cpt = 0
        For i = 1 To ThisWorkbook.Sheets.Count
            If Left$(ThisWorkbook.Sheets(i).Name, 6) = "Feuil3" Then
                ReDim Preserve Ar(Cpt)
                Ar(Cpt) = Sheets(i).Name
                Cpt = Cpt + 1
            End If
        Next i
     
        If Cpt = 0 Then
            Set JobPDF = Nothing
            Exit Sub
        End If
     
        Application.ScreenUpdating = False
     
        Sheets(Ar).Select
        Sheets(Ar).PrintOut copies:=1, ActivePrinter:=sPrinter
     
        '   Fichier dans la file d'attente
        Do Until JobPDF.cCountOfPrintjobs = 1
            DoEvents
        Loop
        '   Démarrage Imprimante
        JobPDF.cPrinterStop = False
     
        '   Attendre que la file d'attente soit vide
        Do Until JobPDF.cCountOfPrintjobs = 0
            DoEvents
        Loop
     
        JobPDF.cClose
        Set JobPDF = Nothing
        Erase Ar
     
        ' Resélectionner une feuille seulement
        Worksheets(1).Select
        Application.ScreenUpdating = True
    End Sub
    De façon plus concise, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Array("Feuil1", "Feuil2")).PrintOut copies:=1, ActivePrinter:=sPrinter
    Ou sinon comme l'indiquait Marc ( que je salue au passage ) Office 2007 SP2 ou + qui intègre le format PDF en natif et l'enregistreur de macros.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2014
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Merci! Est-ce qu'il existe une macro plus simple, sans passer par PDFcreator, qui permette d'exporter en PDF une seule feuille du classeur?

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Bonjour,


    Personnellement, j'utilise ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Worksheets("PDF").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin_nomfichierPDF, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    Où PDF est le nom de ma feuille, et Chemin_nomfichierPDF est le chemin + le nom du PDF final

  6. #6
    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 272
    Points
    11 272
    Par défaut
    Salut, Olivier : pour 2007+ oui , mais ici on parle de 2003. et malheureusement il n'y pas de solution sans logiciel externe.
    Cela dit si tu installes PDFCreator ( gratuit ) en utilisant l'enregistreur de macros tu auras qqch comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
     
    Sub Macro1()
        Application.ActivePrinter = "PDFCreator sur Ne00:"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
            "PDFCreator sur Ne00:", Collate:=True
    End Sub

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Responsable des études
    Inscrit en
    Septembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable des études

    Informations forums :
    Inscription : Septembre 2014
    Messages : 21
    Points : 0
    Points
    0
    Par défaut
    Ca fonctionne à merveille! merci!

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

Discussions similaires

  1. Enregistrer une feuille sous PDF puis l'imprimer
    Par timo.net dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 18/12/2012, 11h10
  2. [E-97] macro pour déprotéger une feuille (fichier partagé)
    Par mart159 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2008, 08h09
  3. taille pour mettre une feuille en format PDF
    Par ptitepo dans le forum Excel
    Réponses: 2
    Dernier message: 27/05/2008, 14h43
  4. enregistrer une feuille excel en document pdf
    Par tunizar dans le forum WinDev
    Réponses: 1
    Dernier message: 14/03/2008, 14h12
  5. [VBA-E] [help]macro pour dupliquer une feuille (en valeur)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 07/11/2005, 19h24

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