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 VBA pour exporter les feuilles sélectionnées d'un classeur excel en fichier PDF


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut Macro VBA pour exporter les feuilles sélectionnées d'un classeur excel en fichier PDF
    Bonjour,
    Je suis nouveau sur le site et novice dans le VBA. Dans le cadre professionnel j'ai créé un fichier excel avec plusieurs feuilles:
    Nom : 1.png
Affichages : 747
Taille : 10,9 Ko

    L'idée est quand je mets 1 comme sur la photo la macro imprime les feuilles correspondantes. Je souhaiterais maintenant faire un fichier PDF est-ce possible ?

    Ci-dessous le code pour l'impression qui marche:
    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
    Sub Imprime_Feuilles()
     
    ' Macro Imprime_Feuilles>
    ' par  Le CFO masqué
     
    Dim vararray() As String
    Dim csname As Integer, c As Integer
    Dim countarr As Integer, r As Integer
    Dim sname As Worksheet
     
    'set up location and counter variables
        csname = Range("A4").Column
        c = Range("C4").Column
        Set sname = ActiveSheet
        r = Range("C4").Row
        countarr = 0
     
    'loop in sheets list
        While sname.Cells(r, csname) <> ""
     
    'add to array if flag is on
            If sname.Cells(r, c) = 1 Then
                ReDim Preserve vararray(countarr)
                vararray(countarr) = sname.Cells(r, csname).Value
                countarr = countarr + 1
            End If
            r = r + 1
        Wend
     
      ActiveSheet.PrintOut
      Sheets(vararray).Select
      ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
      sname.Activate
     
        End Sub
    Images attachées Images attachées  

  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
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici la ligne de commande que j'utilise pour exporter le classeur en pdf où obj est une variable objet de type Workbook soit ThisWorkbook soit ActiveWorkbook ou encore Workbooks("Nom_du_fichier")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FullName
    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
    Futur Membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    Bonjour Philippe,
    Merci pour ta réponse. Mais je ne cherche pas à exporter en PDF tout le classeur, juste les feuilles 1,2 et 3 là où il y a le 1 dans le tableau. Comme la macro pour l'impression mais en PDF.

    A+

  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
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Oui obj peut également être une suite de feuille

    J'ai dû réalisé pour un client un document pdf utilisant quelques feuilles d'un classeur mais dans un ordre différent de celui du classeur d'origine donc soit, j'effectuais un tri des feuilles dans un autre ordre, soit j'exportais les feuilles vers un nouveau classeur. C'est cette dernière option que j'ai choisie

    Dans le code ci-dessous, la variable tableau tbl contient le nom des feuilles à copier

    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
      ' Copie des feuilles à exporter si plus d'1 + définition de la variable obj (soit workbbok soit sheet
      If UBound(tbl) Then
         For s = 0 To UBound(tbl)
           If s Then
              With ActiveWorkbook
                oWorkbook.Sheets(tbl(s)).Copy After:=.Worksheets(.Worksheets.Count)
              End With
            Else
              oWorkbook.Sheets(tbl(s)).Copy
           End If
         Next
         Set obj = ActiveWorkbook
       Else
         Set obj = oWorkbook.Sheets(tbl(0))
      End If
      ' Exportation des feuilles
      obj.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FullName
      If UBound(tbl) Then obj.Close SaveChanges:=False
      Set obj = Nothing
    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
    Futur Membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    Salut Philippe,
    N'oublies pas suis pas doué en codage , faut recréer une macro ou je peux l'intégrer dans mon code d'impression et où ?
    Dois-je déclarer tbl ?
    Merci à toi

  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
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dois-je déclarer tbl ?
    Pour s'éviter des problèmes de maintenances et pour déboguer facilement, il faut toujours déclarer ses variables

    N'oublies pas suis pas doué en codage , faut recréer une macro ou je peux l'intégrer dans mon code d'impression et où ?
    Organisation :
    Une table de mapping (Tableau structuré) contenant le nom des feuilles en colonne 1, le numéro d'ordre de sortie (page 1, 2, etc.) en colonne 2
    Le classeur source contenant les feuilles
    Le classeur cible qui contiendra les feuilles à exporter en pdf dans l'ordre souhaité

    Les étapes de programmation
    1. Chargement de la table de Mapping (Nom de la feuille et n° d'ordre) dans une variable tbl
    2. Tri de cette table par l'ordre de sortie
    3. Copie des feuilles vers le classeur cible
    4. Exportation vers pdf


    A lire éventuellement
    1. Utiliser les variables tableaux en VBA Excel
    2. Apprendre à utiliser les tableaux structurés Excel : création, manipulations et avantages(1)
    3. Excel: Les tables de données en VBA
    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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Sans emploi
    Inscrit en
    Mars 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Mars 2022
    Messages : 4
    Par défaut
    Salut, super merci j'ai du boulot devant moi lol, je reviens vers toi si j'ai des questionsssssss j'en aurais sûrement.
    A+

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si l'ordre des feuilles à exporter est le même que celui du classeur voici sans doute un code plus simple à comprendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub t_1()
      Dim obj As Object
      Dim tbl As Variant
      Dim FullName As String
      tbl = Array("Devis", "Electricité", "Menuiserie")
      Set obj = Worksheets(tbl)
      FullName = ThisWorkbook.Path & "\" & Format(Date, "yyyymmdd") & " - Devis 2"
      ' obj(1) pour l'exemple = feuille "Devis"
      obj(1).ExportAsFixedFormat Type:=xlTypePDF, FileName:=FullName
      Set obj = Nothing
    End Sub
    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

Discussions similaires

  1. [XL-2016] Macro Vba pour exporter en pdf en excluant certains onglets
    Par imago54 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/04/2019, 08h56
  2. Code VBA pour parcourir les feuilles d'un classeur Excel
    Par Dayane86 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 24/02/2019, 17h22
  3. Réponses: 5
    Dernier message: 21/02/2018, 09h36
  4. Problème lors de la 1ère utilisation d'une macro VBA pour copie de feuille
    Par youp_youp_ dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/06/2014, 10h54
  5. [Migration] Macro VBA pour exporter les rep
    Par anodaim dans le forum Administration-Migration
    Réponses: 1
    Dernier message: 09/02/2010, 13h30

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