macro print plusieurs feuilles

birac

XLDnaute Junior
Bonjour,
j'essaye de mettre une macro pour imprimer plusieurs plages de cellules de plusieurs feuilles dans un fichier unique pdf. j'ai donc mis cette macro :

Sub printtest1trim()
'
' printtest1trim Macro
' Macro enregistrée le 30/08/2009 par Philippe BIRAC
'

'
Sheets("i1").Select
Range("O1:X56").Select
Sheets("i2").Select
Range("O1:X57").Select
Sheets("i3").Activate
Range("O1:X57").Select
Application.ActivePrinter = "CutePDF Writer sur CPW2:"
Selection.PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub

lorsque j'execute la macro, seule la dernière plage de la dernière feuille s'imprime dans mon fichier.
Si quelqu'un pouvait m'expliquer ou se trouve mon erreur, je le(s) remercie par avance

Philippe
 

noviceAG

XLDnaute Impliqué
Re : macro print plusieurs feuilles

Bonjour Birac, le Forum,
Je pense qu'il te faut modifier ton code comme suit :

Sub printtest1trim()
Sheets("i1").Select
Range("O1:X56").Select
Application.ActivePrinter = "CutePDF Writer sur CPW2:"
Selection.PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
Sheets("i2").Select
Range("O1:X57").Select
Application.ActivePrinter = "CutePDF Writer sur CPW2:"
Selection.PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
Sheets("i3").Activate
Range("O1:X57").Select
Application.ActivePrinter = "CutePDF Writer sur CPW2:"
Selection.PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub
 

Dull

XLDnaute Barbatruc
Re : macro print plusieurs feuilles

Salut birac, le Forum

C'est normal

les 2 premières actions consiste a activer la feuille et a sélectionner la plage sans imprimer quoi que ce soit

essaye plutôt ce code

Code:
Sub printtest1trim()

Sheets("i1").Range("O1:X56").PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
Sheets("i2").Range("O1:X57").PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
Sheets("i3").Range("O1:X57").PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True

End Sub
ça devrait le faire

Ou alors comme ça

Code:
Sub printtest1trim()
Dim i As Byte

For i = 1 To 3
If Sheets("i" & i).Name = "i1" Then
    Sheets("i" & i).Range("O1:X56").PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
Else
    Sheets("i" & i).Range("O1:X57").PrintOut Copies:=1, ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End If
Next i
End Sub

EDITION:
Salut NoviceAG
Bonne Journée
 
Dernière édition:

SubEndSub

XLDnaute Occasionnel
Re : macro print plusieurs feuilles

Bonjour chez vous


Une autre possiblité


Code:
Sub macro()
Dim j As Long
For j = 1 To 3
Worksheets("i" & j).PageSetup.PrintArea = Worksheets("i" & j).Range("O1:U56").Address
Next j
Sheets(Array("i1", "i2", "i3")).PrintOut Copies:=1, _
ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub

Avec O1:U56 , les données tiennent sur une page, ce qui donne 3 feuilles à imprimer.
 

birac

XLDnaute Junior
Re : macro print plusieurs feuilles

Bonjour chez vous


Une autre possiblité


Code:
Sub macro()
Dim j As Long
For j = 1 To 3
Worksheets("i" & j).PageSetup.PrintArea = Worksheets("i" & j).Range("O1:U56").Address
Next j
Sheets(Array("i1", "i2", "i3")).PrintOut Copies:=1, _
ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub

Avec O1:U56 , les données tiennent sur une page, ce qui donne 3 feuilles à imprimer.

Merci à tous de vos réponses. Celle qui me conviendrait le mieux est celle ci dessus qui marche très bien tel quel (juste adaptation des cellules selon mes colonnes) . Alors moi, confiant, je me dis "j'ai d'autres pages à imprimer dans le fichier, je vais donc adapter ce code ainsi" :

Sub printtest1trim()
Dim j As Long
For j = 1 To 35
Worksheets("i" & j).PageSetup.PrintArea = Worksheets("i" & j).Range("O1:X57").Address
Next j
Sheets(Array("i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "i10", "i11", "i12", "i13", "i14", "i15", "i16", "i17", "i18", "i19", "i20", "i21", "i22", "i23", "i24", "i25", "i26", "i27", "i28", "i29", "i30", "i31", "i32", "i35")).PrintOut Copies:=1, _
ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub

et là surprise !!! erreur sur Worksheets("i" & j).PageSetup.PrintArea = Worksheets("i" & j).Range("O1:X57").Address

SubEndSub, pourrais tu m'expliquer pourquoi ? estt ce que le nombre de feuilles est trop important ? est ce le fait que je n'ai pas de feuille entre 32 et 35 ?

en te remerciant

Philippe
 

Dull

XLDnaute Barbatruc
Re : macro print plusieurs feuilles

Salut SubEndSub
Re le fil

en l'absence de SubEndSub

...est ce le fait que je n'ai pas de feuille entre 32 et 35 ?...
j'ai bien peur que oui

une alternative seulement valable dans ton cas

Code:
Sub macro()
Dim j As Long, o As Byte
For j = 1 To 32
    o = 35
        Worksheets("i" & j).PageSetup.PrintArea = Worksheets("i" & j).Range("O1:U56").Address
        Worksheets("i" & o).PageSetup.PrintArea = Worksheets("i" & o).Range("O1:U56").Address
Next j
Sheets(Array("i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "i10", "i11", "i12", "i13", "i14", "i15", "i16", "i17", "i18", "i19", "i20", "i21", "i22", "i23", "i24", "i25", "i26", "i27", "i28", "i29", "i30", "i31", "i32", "i35")).PrintOut Copies:=1, _
ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub

Bonne Journée
 

birac

XLDnaute Junior
Re : macro print plusieurs feuilles

Salut SubEndSub
Re le fil

en l'absence de SubEndSub

j'ai bien peur que oui

une alternative seulement valable dans ton cas

Code:
Sub macro()
Dim j As Long, o As Byte
For j = 1 To 32
    o = 35
        Worksheets("i" & j).PageSetup.PrintArea = Worksheets("i" & j).Range("O1:U56").Address
        Worksheets("i" & o).PageSetup.PrintArea = Worksheets("i" & o).Range("O1:U56").Address
Next j
Sheets(Array("i1", "i2", "i3", "i4", "i5", "i6", "i7", "i8", "i9", "i10", "i11", "i12", "i13", "i14", "i15", "i16", "i17", "i18", "i19", "i20", "i21", "i22", "i23", "i24", "i25", "i26", "i27", "i28", "i29", "i30", "i31", "i32", "i35")).PrintOut Copies:=1, _
ActivePrinter:="CutePDF Writer sur CPW2:", _
Collate:=True
End Sub

Bonne Journée

Merci beaucoup à tous les deux, ça marche impeccable.
je voudrais me permettre une petite question : les variables j et o
peut on mettre d'autres lignes de ce type en utilisant d'autres lettres ?
je m'explique rapidement : je fais un fichier pour la gestion de plusieurs locaux, or certains sont inoccupés (ex : i17 et i28) puis je mettre :
Dim j As Long, k As Long, l As Long, o As Byte
For j = 1 To 16
k = 18 To 27
l = 29 To 32
o = 35
et rajouter des lignes worksheets conformes à celles écrites ???

merci d'avance

cordialement

Philippe
 

Mytå

XLDnaute Occasionnel
Re : macro print plusieurs feuilles

Salut le forum

Une autre facon avec exclusion de feuilles et remplacement du Array par un Tableau.
Ici on imprime les feuilles 1 à 10, 13 et 15 à 35.
Code:
Sub Impression() 
Dim Feuille As Byte 
Dim Tablo() As String 
ReDim Tablo(0) 

With ThisWorkbook 
  For Feuille = 1 To 35 'Tes feuilles sont I1 à I35 
    Select Case Feuille 
      Case 1 To 10, 13, 15 To 35 
        Tablo(UBound(Tablo)) = "I" & Feuille 
        ReDim Preserve Tablo(UBound(Tablo) + 1) 
        Worksheets("I" & Feuille).PageSetup.PrintArea = "$O$1:$X$57" 
    End Select 
  Next Feuille 
ReDim Preserve Tablo(UBound(Tablo) - 1) 
End With 
Sheets(Tablo()).PrintOut Copies:=1, _ 
  ActivePrinter:="CutePDF Writer sur CPW2:", _ 
    Collate:=True 
End Sub
Mytå
 

birac

XLDnaute Junior
Re : macro print plusieurs feuilles

Salut le forum

Une autre facon avec exclusion de feuilles et remplacement du Array par un Tableau.
Ici on imprime les feuilles 1 à 10, 13 et 15 à 35.
Code:
Sub Impression() 
Dim Feuille As Byte 
Dim Tablo() As String 
ReDim Tablo(0) 

With ThisWorkbook 
  For Feuille = 1 To 35 'Tes feuilles sont I1 à I35 
    Select Case Feuille 
      Case 1 To 10, 13, 15 To 35 
        Tablo(UBound(Tablo)) = "I" & Feuille 
        ReDim Preserve Tablo(UBound(Tablo) + 1) 
        Worksheets("I" & Feuille).PageSetup.PrintArea = "$O$1:$X$57" 
    End Select 
  Next Feuille 
ReDim Preserve Tablo(UBound(Tablo) - 1) 
End With 
Sheets(Tablo()).PrintOut Copies:=1, _ 
  ActivePrinter:="CutePDF Writer sur CPW2:", _ 
    Collate:=True 
End Sub
Mytå


Bonsoir Myta
merci beaucoup, c'est exactement ce que je cherchais et j'ai même compris le principe :)

merci à toutes celles et tous ceux qui font vivre ces forums et qui partagent leurs connaissances avec nous qui n'y connaissons pas grand chose mais qui avons la soif d'apprendre.

cordialement

Philippe
 

Discussions similaires

Statistiques des forums

Discussions
312 047
Messages
2 084 864
Membres
102 690
dernier inscrit
souleymaane