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 :

VBA : Liste onglets Listbox et impression PDF [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut VBA : Liste onglets Listbox et impression PDF
    Bonjour à tous,

    Je suis nouveau sur ce forum et novice en VBA. J'ai passé plusieurs heures à mettre au point un code me permettant de lister les onglets d'un fichier Excel dans un Listbox, puis, d'imprimer en PDF les onglets sélectionnés, cependant, il ne fonctionne toujours pas, n'arrivant vraiment pas à trouver de solution par moi même, je me tourne vers vous.

    Je travaille sur Excel 2016 MSO, mon fichier comprend une bonne vingtaine d'onglets nommés respectivement "1", "2", "3" etc ... + éventuellement d'autres onglets qui seront ajoutés avec des noms "Fact" ou "Detail". C'est pourquoi j'ai besoin d'établir préalablement la liste des onglets. Enfin, seuls 2 ou 3 onglets doivent être transformés en PDF à chaque utilisation et ces derniers varient, d'où ma volonté d'utiliser une listbox pour les choisir.
    Je me suis inspiré d'une multitude de "bouts" de code que j'ai trouvé sur ce forum et dans des tutos sur youtube.


    J'ai déjà créer un Userform1 contenant une Listbox1 et un commandbutton1.

    Le but est de :
    1) Lister les onglets dans la listbox
    2) Attribuer à la variable Save le texte correspondant aux noms des onglets sélectionnés sous la forme suivante : " "Onglet1","Onglet2", etc... " (dans mon cas ca sera " "1","2", etc ....")
    3) Sélectionner les onglets (array(Save)) ==> C'est ici que ca coince !!!
    4) Exporter en PDF


    Ci-dessous le code de la Listbox1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
     
    Public Save As String
    Public Rep As String
     
    Private Sub ListBox1_Enter()
     
    Dim i As Integer
    For i = 1 To Sheets.Count
    ListBox1.AddItem Sheets(i).Name
    Next i
     
    End Sub




    Ci-dessous le code du Commandbutton1:


    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
    Private Sub CommandButton1_Click()
     
    For i = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) = True Then
    Save = "" & Save & """" & ListBox1.List(i) & """ ,"
    End If
    Next i
     
    Save = Left(Save, Len(Save) - 3)   
    Save = Right(Save, Len(Save) - 1)   
     
    If Save = "" Then
    MsgBox "Veuillez choisir au moins un onglet"
    Else
    MsgBox Save
    End If
     
    Call Module2.Export_PDF
     
    End Sub



    Ci-dessous le code du Module 2 pour Exporter en PDF :


    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
    Sub Export_PDF()
    
    Dim nomfichier As String
    
    rep = "C:\Users\jbasin\Desktop\PDF Clients"
    
    Sheets(array(Save)).Select    ' Le problème est sur cette ligne, en débit du fait que la variable Save enregistre les noms d'onglets correctement
    
    nomfichier = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5) 'Le but est de retirer le .xlsm
    
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=rep & "\" & nomfichier _
            , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
            :=False, OpenAfterPublish:=False
        Application.ScreenUpdating = True
        
    Unload (UserForm1)
    
    End Sub

    J’espère que la méthode que j'utilise est possible et qu'il ne s'agit que d'une petite erreur. Quoi qu'il en soit, je remercie par avance les personnes qui auront pris le temps de lire mon message.


    Mido54

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Mido, bonjour le forum,

    Peut-être comme ça pour les code de l'UserForm :
    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
    Option Explicit
     
    Private Sub UserForm_Initialize()
    Dim i As Integer
     
    Me.ListBox1.MultiSelect = 1
    For i = 1 To Sheets.Count
        ListBox1.AddItem Sheets(i).Name
    Next i
    End Sub
     
    Private Sub CommandButton1_Click()
    Dim OS() As Variant
    Dim i As Integer
    Dim K As Integer
     
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            ReDim Preserve OS(K)
            OS(K) = Worksheets(Me.ListBox1.List(i)).Name
            K = K + 1
        End If
    Next i
     
    If K = 0 Then
        MsgBox "Veuillez choisir au moins un onglet"
    Else
        Sheets(OS).Select
    End If
    Call Module2.Export_PDF
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Bonjour Thautheme,

    Effectivement ça fonctionne parfaitement avec votre code. Mille merci pour votre aide et votre rapidité de surcroît !!!!


    PS : J'ai "liké" votre commentaire et marqué le topic comme résolu. Y'a t-il quelque chose que je puisse/doive faire pour exprimer ma gratitude ou aider quelqu'un qui aurait la même question ?

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

Discussions similaires

  1. Impression d'une liste (aléatoire) d'onglets depuis excel en pdf
    Par virginie2016 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/03/2016, 09h32
  2. Impression pdf et VBA
    Par tom0ne dans le forum VBA Word
    Réponses: 39
    Dernier message: 07/01/2012, 23h04
  3. Réponses: 2
    Dernier message: 01/06/2011, 00h22
  4. Impression PDF en VBA
    Par divayg dans le forum Général VBA
    Réponses: 0
    Dernier message: 27/11/2009, 13h24
  5. Impression PDF a l'aide de VBA
    Par kalu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/01/2009, 10h08

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