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 :

Enregistrer plusieurs tableaux dans différentes pages PDF


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Points : 31
    Points
    31
    Par défaut Enregistrer plusieurs tableaux dans différentes pages PDF
    Bonjour,

    J'ai plusieurs tableaux T1, T2, T3, T4 dans une feuille Excel et je voudrais enregistrer un seul PDF avec un tableau par page via un code VBA. J'ai beau tourner mon code et mes boucles dans tous les sens, seul le dernier tableau est exporté en PDF...
    Auriez-vous des idées ?

    Merci d'avance pour votre aide !

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Auriez-vous des idées ?
    Et bien on aurait déjà plus d'idées si tu publiais le code que tu as créé et qui n'exporte que le dernier tableau
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    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
    Set LastNonEmptyCell2 = Sheets("Weekly Events").Cells(Rows.Count, 5).End(xlUp)
            Set A1 = LastNonEmptyCell2.End(xlUp).Offset(-2, -1)
            Set B1 = LastNonEmptyCell2.Offset(0, 8)
            T1 = Range(A1, B1).Address
     
            Set LastNonEmptyCell2 = Sheets("Weekly Events").Cells(Rows.Count, 16).End(xlUp)
            Set A2 = LastNonEmptyCell2.End(xlUp).Offset(-2, -1)
            Set B2 = LastNonEmptyCell2.Offset(0, 8)
            T2 = Range(A2, B2).Address
     
            Set LastNonEmptyCell2 = Sheets("Weekly Events").Cells(Rows.Count, 27).End(xlUp)
            Set A3 = LastNonEmptyCell2.End(xlUp).Offset(-2, -1)
            Set B3 = LastNonEmptyCell2.Offset(0, 8)
            T3 = Range(A3, B3).Address
     
            Set LastNonEmptyCell2 = Sheets("Weekly Events").Cells(Rows.Count, 38).End(xlUp)
            Set A4 = LastNonEmptyCell2.End(xlUp).Offset(-2, -1)
            Set B4 = LastNonEmptyCell2.Offset(0, 8)
            T4 = Range(A4, B4).Address
     
            formName = "G:\PDF\" & d & "_Recap" & ".pdf"
     
            myArr = Array("Weekly Events", "Weekly Events", "Weekly Events", "Weekly Events")
            rngArr = Array(T1, T2, T3, T4)
     
            For i = 0 To UBound(myArr)
                Set Ws = Sheets(myArr(i))
                With Ws
                    .PageSetup.PrintArea = .Range(rngArr(i)).Address
                End With
            Next i
            'Sheets(myArr).Select
     
            Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            formName, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            False

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le problème vient de cette partie du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 0 To UBound(myArr)
    Set Ws = Sheets(myArr(i))
    With Ws
    .PageSetup.PrintArea = .Range(rngArr(i)).Address
    End With
    Next i
    Tu définis à chaque passage de la boucle une nouvelle zone d'impression. C'est donc normal que seule la dernière soit retenue.
    Il faudrait définir une zone non contiguë comme par exemple E3:H10;P11:Q25;AA8:AE23 avec la fonction Join

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Weekly Events").PageSetup.PrintArea = Join(rngarr, ",")
    Je ne comprends pas la raison de cette ligne de code puisque la feuille est la même.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myArr = Array("Weekly Events", "Weekly Events", "Weekly Events", "Weekly Events")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup, ca fonctionne, je ne connaissais pas la fonction Join

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 766
    Points : 28 625
    Points
    28 625
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je ne connaissais pas la fonction Join
    Comme tu utilises les variables tableaux, je ne peux que te conseiller la lecture de ce tutoriel Utiliser les variables tableaux en VBA Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2010] Copie de plusieurs tableaux de différentes feuilles dans un mail
    Par Pilote d'élite dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 12/09/2018, 11h13
  2. [FPDF] Afficher plusieurs tableaux dans un fichier PDF
    Par Pakman80 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 30/07/2007, 15h19
  3. [VB.NET] Créer plusieurs tableaux dans word
    Par Dj Thunder dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/06/2006, 00h04
  4. Réponses: 17
    Dernier message: 03/06/2006, 03h29
  5. [débutant] appeler plusieurs methodes dans une page html
    Par soulhouf dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/08/2005, 19h20

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