Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Vba : imprimer liste onglets [RESOLU]

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Il me semblait que cette méthode fonctionnait , elle venait du web mais apparemment il y a une erreur que je ne sais expliquer
avant j'avais ça , mais ne fonctionne pas donc j'essaie par une méthode plus souple ( sélection des onglets hors VBA)
VB:
Sheets(Array("Présentation", "Les modifications", "Les ressources")).Select
merci
 

Pièces jointes

  • imp_liste.xlsm
    15.9 KB · Affichages: 11

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir hervé62

Essaies avec ceci :
VB:
Sub Choix_Impression()
Dim Ws As Worksheet
For Each Ws In Sheets(Array("Présentation", "Les modifications", "Les ressources"))
ou plus rapide 
For Each Ws In Sheets(Array(1, 2, 3))
Ws.PrintOut Copies:=1, Preview:=True, Collate:=True
Next Ws
End Sub
Bonne soirée
@+ Eric c
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Salut, à voir : Impression de certaines Feuilles d'un classeur via un tableau dans un seul Pdf résultant

VB:
Option Explicit

Sub Test()
Dim onglet() As String
Dim dl As Long, x As Long
Dim sNomFichierPDF As String, bFeuille As Boolean

    dl = Feuil4.Range("A" & Rows.Count).End(xlUp).Row
    For x = 0 To dl - 1
        ReDim Preserve onglet(x)
        onglet(x) = Feuil4.Cells(x + 1, 1)
        bFeuille = FeuilleVide(onglet(x))
        If bFeuille Then Exit For
    Next x

    If bFeuille Then
        MsgBox "Attention feuille vide : " & onglet(x), vbOKOnly + vbCritical
        Exit Sub
    End If
  
    Application.ScreenUpdating = False
    Sheets(onglet).Select

    sNomFichierPDF = ThisWorkbook.Path & "\" & "Essai.pdf"

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=sNomFichierPDF, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False
    Feuil4.Select
    Application.ScreenUpdating = True
End Sub

Private Function FeuilleVide(sNomFeuille As String) As Boolean
    FeuilleVide = False
    If WorksheetFunction.CountA(Worksheets(sNomFeuille).UsedRange) = 0 And _
       Worksheets(sNomFeuille).Shapes.Count = 0 Then
        FeuilleVide = True
    End If
End Function
 
Dernière édition:

Eric C

XLDnaute Barbatruc
Re,
Bonsoir kiki29, bonsoir Jacky

Excellent film sur TF1.
Donc revenons à nos moutons. Hervé nous dit "Avant j'avais cela pour sélectionner mes feuilles via un Array mais cela ne fonctionne plus.
J'ai donc adapté ton fichier avec un Array qui te permet de sélectionner une ou des feuilles plus rapidement. Pour ma part, tes feuilles étaient (comme le stipule notre ami TooFatBoy (que je salue), vides ... (Donc l'impression l'est tout autant).
J'y ai donc mis quelques annotations succinctes et afin de ne pas imprimer pour rien (le temps est désormais aux économies..Isn't ?), j'ai remplacé PrintOut par PrintPrevew ET cela a fonctionné parfaitement. Je joints le fichier avec les feuilles modifiées.
Bonne nuit
@+ Eric c
 

Pièces jointes

  • Hervé imp_liste.xlsm
    20.1 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Salut Eric C
Je confirme que chez moi aussi ton code de #2 fonctionne parfaitement.
Encore faut-il que les feuilles ne soient pas vides, ou si elles le sont qu'il y ait une zone d'impression qui soit définie. Sinon il ne se passe bien sûr rien.



bonsoir Jacky
Hein !?! Comment tu sais ???
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir tous
Bon je reviens après essai
Merci de vos contributions
Eric bien : tes 2 sub fonctionnent (( ton fichier & la sub que j'ai greffé dans mon fichier).............mais j'attends encore devant l'imprimante .pas d'erreur mais ça fait rien ??

PS : mes feuilles ne sont plus vierges !
Juste pour le fun : "désormais aux économies..Isn't ?" > Isn't IT !!! (un bilingue)
 

Eric C

XLDnaute Barbatruc
Re le fil
@hervé62 qui dit :
j'attends encore devant l'imprimante .pas d'erreur mais ça fait rien ??
Perso, je subodore que tu utilises non pas une imprimante mais une polycopieuse des année 70 (Hum ... la bonne odeur d'alcool dans les classes). Dans le présent cas, il n'y a pas de moteur et la copie se fait en actionnant la manivelle (Note d'humour Isn't it ?)

-Allez bonne soirée à toutes & à tous.
@+ Eric c
 

Eric C

XLDnaute Barbatruc
Bonjour le fil

@Hervé : Bonjour Hervé. Oui c'était une ronéotype
Sino, comme a dit notre ami TooFatBy (que je salue), la fin du code est :
VB:
Ws.PrintOut Copies:=1, Preview:=True, Collate:=True
Net Ws
End Sub
Cela fonctionne avec PrintPreview donc "doit" fonctionner avec PrintOut.
Bonne journée
@+ Eric c
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re
Bon avec ça c'est déjà mieux CA IMPRIME !!!!!!!!!! ( du fichier d'Eric )
VB:
Ws.PrintOut Copies:=1, Preview:=False, Collate:=True
Mais par contre si Je la remet dans le fichier du #1 > pas d'erreur , mais RIEN ne se passe
Code:
Sub Choix_Impression()
Dim Ws As Worksheet
Dim liste(2) As String
liste(0) = "Présentation"
liste(1) = "Les modifications"
liste(2) = "Les ressources"

For Each Ws In Sheets(Array("Présentation", "Les modifications", "Les ressources"))

Ws.PrintOut Copies:=1, Preview:=False, Collate:=True
Next Ws
End Sub

Ras le Bol !!!! J'ai donc recréé un fichier "bidon" et remis cette Sub et Là ...... OK ???????

Je l'ai donc intégré dans l'Appli de mon pote et PAN > erreur jointe ?????

Je pige plus rien c'est la structure de base du fichier ?????
 

Pièces jointes

  • printout.jpg
    10 KB · Affichages: 12

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…