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 677
    Points
    18 677
    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.
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  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 274
    Points
    11 274
    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 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    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
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  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 274
    Points
    11 274
    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, 12h10
  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, 09h09
  3. taille pour mettre une feuille en format PDF
    Par ptitepo dans le forum Excel
    Réponses: 2
    Dernier message: 27/05/2008, 15h43
  4. enregistrer une feuille excel en document pdf
    Par tunizar dans le forum WinDev
    Réponses: 1
    Dernier message: 14/03/2008, 15h12
  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, 20h24

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