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 :

Boucle Enregistrement sous PDF


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle Enregistrement sous PDF
    Bonjour,

    Merci de m'avoir accueilli dans votre forum.

    Je suis en stage en contrôle de gestion et m'attaque à ma première macro. Je souhaite savoir si c'est possible d'enregistrer plusieurs onglets d'un fichier Excel en PDF sans commencer par la 1ère page et sans finir par la dernière.
    En gros je souhaite savoir si je peux créer une boucle sur 10 des 15 onglets qui composent le fichier. Le 1er onglet à enregistrer n'est pas le 1er onglet du fichier et le dernier n'est pas le dernier du fichier. Par contre, les onglets à enregistrer se suivent tous.
    J'arrive à faire une boucle prenant en compte tous les onglets du coup ça m'enregistre tous les onglets du fichier sous PDF. :s

    Voici le code que j'utilise pour faire cette macro qui au final ne me sert qu'à moitié.

    Code VBA : 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
    Sub EnregistrementMacroOngletParOnglet()
     
    annee = Year(Now)
    Select Case Month(Now)
    Case 1
    mois = "décembre"
    annee = annee - 1
    Case 2
    mois = "janvier"
    Case 3
    mois = "février"
    Case 4
    mois = "mars"
    Case 5
    mois = "avril"
    Case 6
    mois = "mai"
    Case 7
    mois = "juin"
    Case 8
    mois = "juillet"
    Case 9
    mois = "août"
    Case 10
    mois = "septembre"
    Case 11
    mois = "octobre"
    Case 12
    mois = "novembre"
    End Select
     
    Application.ScreenUpdating = False
    On Error Resume Next
    MkDir "K:\Stage\Mamoun\Mise en place macro Dvpmt Export"
    For i = 1 To Sheets.Count
    Sheets(i).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="K:\Stage\ME\Mise en place macro Dvpmt Export\" & Sheets(i).Name & "_" & mois & "_" & annee & ".pdf"
    Next i
    Sheets(1).Select
    Application.ScreenUpdating = True
    MsgBox ("Les " & Sheets.Count & " documents PDF viennent d'être créés et sonT disponnibles dans le répertoire K:\Stage\ME\Mise en place macro Dvpmt Export  ")
    End Sub

    Merci par avance,

    Cordialement,

    Lasermams

  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, commence par baliser ton code

    Sinon voir ici en bas de ce post 1 : Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant

  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
    Re, eh bien on continue : tu supprimes ton post #3 inutile
    pour cela "Modifier ton message" cocher "Supprimer ce message de la manière suivante" puis cliquer sur "supprimer ce message"

    ensuite baliser le post #1, puis lire le post #2 : la solution y est.

  4. #4
    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
    Re, comme j'ignore tes critères de choix des feuilles à imprimer, j'en ai mis des factices, ainsi que pour le dossier de sauvegarde pour mes tests : cela tu dois pouvoir le rectifier toi-même.

    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
    Option Explicit
     
    Sub Test()
    Dim FSO As Object, sMois As String, i As Long, cpt As Long, Ar() As String
    Dim iAnnee As Long, sDossier As String, sNomFichierPDF As String
     
        iAnnee = Year(Now)
        Select Case Month(Now)
            Case 1
                sMois = "décembre"
                iAnnee = iAnnee - 1
            Case 2
                sMois = "janvier"
            Case 3
                sMois = "février"
            Case 4
                sMois = "mars"
            Case 5
                sMois = "avril"
            Case 6
                sMois = "mai"
            Case 7
                sMois = "juin"
            Case 8
                sMois = "juillet"
            Case 9
                sMois = "août"
            Case 10
                sMois = "septembre"
            Case 11
                sMois = "octobre"
            Case 12
                sMois = "novembre"
        End Select
     
        sDossier = ThisWorkbook.Path & "\" & "Essai"
        Set FSO = CreateObject("Scripting.FileSystemObject")
        If Not FSO.FolderExists(sDossier) Then FSO.CreateFolder (sDossier)
        Set FSO = Nothing
     
        cpt = 0
        For i = 1 To ThisWorkbook.Sheets.Count
            If Left$(Sheets(i).Name, 2) = "RF" Or _
                    Left$(Sheets(i).Name, 2) = "RC" Or _
                    Left$(Sheets(i).Name, 5) = "Graph" Then
                ReDim Preserve Ar(cpt)
                Ar(cpt) = Sheets(i).Name
                cpt = cpt + 1
            End If
        Next i
        If cpt = 0 Then Exit Sub
     
        sNomFichierPDF = sDossier & "\" & sMois & "_" & CStr(iAnnee) & ".pdf"
        DoEvents
     
        Application.ScreenUpdating = False
     
        Sheets(Ar).Select
     
        'xlQualityStandard ou xlQualityMinimum
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sNomFichierPDF _
                , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
                :=False, OpenAfterPublish:=False
     
        Sheets(1).Select
        Erase Ar
     
        Application.ScreenUpdating = True
     
        Application.StatusBar = "PDF créés dans le répertoire " & sDossier
    End Sub
    Si tu disposes de PDFCreator il y a aussi ceci

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Re,

    Je suis désolé mais je ne comprends pas très bien les codes. En fait le code que j'ai posté, je l'ai trouvé par hasard sur internet et ça marche bien, il me permet bien d'enregistrer les onglets 1 à 1 sous PDF (sans imprimer, parfait car je veux juste enregistrer sous PDF). Par contre il enregistre tous les onglets en PDF. Or, moi ce que je veux c'est juste une partie : par exemple améliorer ce code afin qu'il commence à enregistrer sous PDF à partir de la feuille 4 et répète l'opération juste 5 fois (et non pas jusqu'à la fin du fichier).

    Merci par avance,

  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, imprimer/enregister en pdf c'est la même chose car tu passes par une imprimante virtuelle ...

    cette partie te permet de sélectionner les feuilles désirées ( à adapter à ton contexte )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        cpt = 0
        For i = 1 To ThisWorkbook.Sheets.Count
            If Left$(Sheets(i).Name, 2) = "RF" Or _
                    Left$(Sheets(i).Name, 2) = "RC" Or _
                    Left$(Sheets(i).Name, 5) = "Graph" Then
                ReDim Preserve Ar(cpt)
                Ar(cpt) = Sheets(i).Name
                cpt = cpt + 1
            End If
        Next i
        If cpt = 0 Then Exit Sub
    en plus concis tu peux remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(Array("FeuilA", "FeuilX", "FeuilZ","GraphW")).Select
    ce que je vois surtout c'est que que tu ne testes pas, que tu ne lis pas ce qui est écrit dans les posts ou pire ...

Discussions similaires

  1. [PPT-2007] Posez votre question Signaler Enregistrer sous PDF
    Par leloup84 dans le forum Powerpoint
    Réponses: 0
    Dernier message: 14/06/2012, 14h00
  2. Créer un lien hypertexte après voir enregistrer sous PDF
    Par babou41287 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/01/2012, 12h31
  3. Impossible enregistrer sous pdf
    Par bigbernie dans le forum Word
    Réponses: 13
    Dernier message: 20/01/2009, 16h26
  4. Peut-on donner automatiquement un nom à un enregistrement sous PDF ?
    Par nat44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2008, 14h51
  5. enregistrer sous pdf
    Par nouha_79 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2007, 13h58

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