Imprimer les onglets sélectionnés en VBA

tchaz26

XLDnaute Nouveau
Bonjour à tous,

dans le cadre de mon travail, je me retrouve à avoir à faire une "petite" macro qui filtre les onglets avant d'imprimer ceux qui doivent l'être.

pour ce faire, j'ai fait une macro qui me cache les onglets indésirables et qui sélectionne les onglets visible.(si vous la voulez, demandez la moi, mais c'est un peu du bricolage ;) )

toute la macro marche jusqu'au moment d'imprimer ma sélection d'onglets.
mais un code vaux mieux que de grandes phrases, donc le voici:

Code:
Sub imp()
    'début de ma macro qui cache les onglets à ne pas imprimer et qui fonctionne bien ^^
    'sélection des onglets visibles
        For Each ws In Worksheets
            If ws.Visible = xlSheetVisible Then ws.Select Replace:=False
        Next ws
'les onglets que je veux imprimer sont sélectionnés
'
'et la je n'arrive pas à trouver la syntaxe pour imprimer les onglets sélectionnés

End Sub


est-ce que quelqu'un aurai une idée à me proposer? (en plus je suis sur que c'est tout bête^^)
A savoir que la finalité est d'automatiser la création d'un document PDF unique, c'est pour cela que je fait une sélection, sinon imprimer feuille par feuille je sais faire ;).


merci d'avance.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Imprimer les onglets sélectionnés en VBA

bonjour tchaz, et bienvenue sur le forum

avec ce code:

Code:
Sub imprimer()
    'début de ma macro qui cache les onglets à ne pas imprimer et qui fonctionne bien ^^
    'IMPRIMER LES ONGLETS VISIBLES
        For Each ws In Worksheets
            If ws.Visible = xlSheetVisible Then ws.PrintOut
        Next ws
End Sub

à+
Philippe
 

tchaz26

XLDnaute Nouveau
Re : Imprimer les onglets sélectionnés en VBA

merci beaucoup pour cette réactivité.

le problème avec le code que vous me donnez, c'est qu'il fait du feuille par feuille, ce qui n'est pas gênant si je lance l'impression sur une imprimante, encore qu'il peut y avoir jusqu'à 50 feuilles à imprimer et que je préfère lancer une impression de 50 feuilles que 50 impression d'une feuille, ce qui éviterait d'avoir des feuilles de mes collègues au milieu des miennes (impression sur photocopieur en réseau).

mais comme je l'ai dit, en plus de l'impression papier,il me faut créer un seul pdf avec tous les onglets visible.
pour la partie pdf j'ai ça:

Code:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "R:\xxx\" & Range("D3") & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
       False

mais ce code ne me fait un pdf que de l'onglet actif.

ce qu'il me faut c'est remplacer "ActiveSheet" pour qu'il prenne en compte les onglets sélectionnés et me faire ainsi un seul PDF au lieu d'un par onglet.
 

camarchepas

XLDnaute Barbatruc
Re : Imprimer les onglets sélectionnés en VBA

Bonjour Tchaz, Philippe

Comme ceci , cela devrait fonctionner

Code:
Sub impr()
Dim Ws As Worksheet
     'début de ma macro qui cache les onglets à ne pas imprimer et qui fonctionne bien ^^
     'sélection des onglets visibles
         For Each Ws In Worksheets
             If Ws.Visible = xlSheetVisible Then Ws.Select Replace:=False
         Next Ws
 'les onglets que je veux imprimer sont sélectionnés
ActiveWindow.SelectedSheets.PrintOut
 
End Sub
 

tchaz26

XLDnaute Nouveau
Re : Imprimer les onglets sélectionnés en VBA

parfait camarchepas,
et comme je le disais, c'est tout bête ^^

L'impression se lance bien, par contre maintenant j'ai un soucis avec l'enregistrement pdf.

-si je marque Activewindow.SelectedSheets.ExportAsFixedFormat... ça me met "erreur de compilation: membre de méthode ou de données introuvable" donc la syntaxe est fausse.

-si je marque ActiveSheet.ExportAsFixedFormat ... ça me met "erreur d'execution '5': argument ou appel de procédure incorrect" . j'ai peut-être fait un erreur?
Code:
'je donne le chemin au début de mon code
        Dim Chemin As String
        Chemin = "R:\yoann\" & Range("G5") & ".pdf"
'et a la fin
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

je voie pas ce qui cloche...:confused:
 

camarchepas

XLDnaute Barbatruc
Re : Imprimer les onglets sélectionnés en VBA

Re ,

Je viens de faire le test, comme ceci cela fonctionne .

Il faut bien sur être au minimum en Excel 2007

Code:
Sub ff()


        Dim Chemin As String
         Chemin = "c:\temp\" & "Bidon" & ".pdf"
 'et a la fin
Dim Ws As Worksheet
      'début de ma macro qui cache les onglets à ne pas imprimer et qui fonctionne bien ^^
     'sélection des onglets visibles
         For Each Ws In Worksheets
              If Ws.Visible = xlSheetVisible Then Ws.Select Replace:=False
          Next Ws
  'les onglets que je veux imprimer sont sélectionnés
 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
         Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
         OpenAfterPublish:=False

End Sub
 

Discussions similaires

Réponses
7
Affichages
328

Statistiques des forums

Discussions
312 229
Messages
2 086 424
Membres
103 206
dernier inscrit
diambote