Macro exporter plusieurs onglets en pdf

  • Initiateur de la discussion Initiateur de la discussion mexitinoco
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mexitinoco

XLDnaute Nouveau
Salut le forum,

J'ai créé une macro qui affiche une fenêtre avec plusieurs cases à cocher, chaque case correspond en fait à un onglet du classeur, et donc on choisit les onglets que l'on souhaite conserver puis on clique sur un bouton qui les exporte en pdf. J'arriva à faire fonctionner la macro un onglet à la fois mais le soucis est que j'aimerais bien pouvoir sélectionner plusieurs onglets en même temps et les exporter dans le même pdf.

Je vous mets le code que j'ai écris jusqu'à présent mais qui ne fonctionne pas (pour changer) :

VB:
Private Sub CommandButton1_Click()

Dim Sh1, Sh2, Sh3, Sh4, Sh5 As Worksheets

If CheckBox1.Value = True Then
    Set Sh1 = Sheets("Format 1")
    Else
End If

If CheckBox2.Value = True Then
    Set Sh2 = Sheets("Format 2")
    Else
End If

If CheckBox3.Value = True Then
    Set Sh3 = Sheets("Format 3")
    Else
End If

If CheckBox4.Value = True Then
    Set Sh4 = Sheets("Format 4")
    Else
End If

If CheckBox5.Value = True Then
    Set Sh5 = Sheets("Format 5")
    Else
End If
    

Sheets(Array(Sh1, Sh2, Sh3, Sh4, Sh5)).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\antoine.dupont\Desktop\Stage\Mes tâches\Validation format\Fichier_test_formats.pdf" _
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=True
End Sub

Des idées ? Merci pour vos réponses !
 
Bonsoir fvr1 ,le Fil
Bonsoir le Forum
une avancée peut être § Lol
VB:
Private Sub Exportation_Click()
    Dim NomsFeuilles() As Variant
    Dim i As Integer, indx As Integer
    Dim StrName$
    For i = 1 To 12
        If Me.Controls("CheckBox" & i) Then
        StrName = Me.Controls("CheckBox" & i).Caption
            indx = indx + 1
            ReDim Preserve NomsFeuilles(1 To indx)
            NomsFeuilles(indx) = StrName
        End If
    Next

    If indx > 0 Then
    For indx = 1 To UBound(NomsFeuilles)
        Sheets(NomsFeuilles(indx)).range("A1;B33).Select
        Selection.ExportAsFixedFormat _
                Type:=xlTypePDF, Filename:= _
                ThisWorkbook.Path & "\Fichier_test_" & NomsFeuilles(indx) & ".pdf", _
                                  Quality:=xlQualityStandard, _
                                  IncludeDocProperties:=True, _
                                  IgnorePrintAreas:=False, _
                                  OpenAfterPublish:=True
     Next
    End If
End Sub
Bonne fin de Soirée
cordialement
Jean marie
 
Re
après m'être adressé au Claude !
une autre Version optimisée !
Code:
Private Sub Exportation_Click()
    Dim NomsFeuilles As Collection
    Dim i As Integer
    Dim chk As MSForms.CheckBox
    Dim NomFeuille As Variant
    Dim CheminBase As String
    Dim ws As Worksheet
    
    ' ? Utiliser une Collection au lieu d'un tableau dynamique
    Set NomsFeuilles = New Collection
    CheminBase = ThisWorkbook.Path & "\Fichier_test_"
    
    ' ? Collecter les noms des feuilles cochées
    For i = 1 To 12
        On Error Resume Next
        Set chk = Me.Controls("CheckBox" & i)
        On Error GoTo 0
        
        If Not chk Is Nothing Then
            ' ? Vérifier la valeur (pas juste l'existence)
            If chk.Value = True Then
                NomsFeuilles.Add chk.Caption
            End If
        End If
    Next i
    
    ' ? Vérifier qu'il y a au moins une feuille à exporter
    If NomsFeuilles.Count = 0 Then
        MsgBox "Veuillez sélectionner au moins une feuille à exporter.", vbExclamation, "Aucune sélection"
        Exit Sub
    End If
    
    ' ? Désactiver les mises à jour d'écran pour accélérer
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    On Error GoTo ErrHandler
    
    ' ? Exporter les feuilles sélectionnées
    For Each NomFeuille In NomsFeuilles
        ' Vérifier que la feuille existe
        On Error Resume Next
        Set ws = ThisWorkbook.Sheets(CStr(NomFeuille))
        On Error GoTo 0
        
        If Not ws Is Nothing Then
            ws.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=CheminBase & NomFeuille & ".pdf", _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=False  ' ? Ne pas ouvrir à chaque fois
            
            Set ws = Nothing
        Else
            Debug.Print "Feuille introuvable : " & NomFeuille
        End If
    Next NomFeuille
    
    ' ? Message de confirmation
    MsgBox NomsFeuilles.Count & " feuille(s) exportée(s) en PDF.", vbInformation, "Export terminé"
    
    ' ? Ouvrir le dossier contenant les PDFs
    Shell "explorer.exe " & ThisWorkbook.Path, vbNormalFocus
    
Cleanup:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Exit Sub
    
ErrHandler:
    MsgBox "Erreur lors de l'exportation : " & Err.Description, vbCritical
    Resume Cleanup
End Sub
Bonne fin de Soirée
cordialement
Jean marie
 
Hello ChTi160,

Ou encore :
VB:
Private Sub Exportation_Click()
    Dim NomsFeuilles() As Variant
    Dim i As Integer, idx As Integer
    For i = 1 To 12
        If Me.Controls("CheckBox" & i) Then
            idx = idx + 1
            ReDim Preserve NomsFeuilles(1 To idx)
            NomsFeuilles(idx) = Format("1/" & i, "mmmm")
        End If
    Next
    If idx > 0 Then
        Sheets(NomsFeuilles).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\Fichier_test_formats.pdf"
    End If
End Sub
A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
671
Réponses
2
Affichages
329
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
313
Retour