Pepitolito
XLDnaute Nouveau
Bonsoir,
Plus habitué à me débrouiller en fouinant dans les forums qu'à poster dedans, veuillez excuser par avance une éventuelle maladresse.
Je suis actuellement en train de finaliser une macro réalisée à partir d'Excel 2007, le but est de la faire tourner sur Excel 2007 et Excel 2010.
99% de la macro marchent mais la partie d'impression des divers onglets du classeur pose problème.
Je m'explique :
Plusieurs onglets, 11 pour être précis, doivent s'imprimer à la demande de l'utilisateur.
Pour ce faire j'ai défini manuellement (directement avec Excel, pas en vba) les diverses zones d'impression de chaque onglet.
Sur ma machine (Excel 2007 sur Windows XP émulé depuis un Mac, vous suivez toujours?!) tout fonctionne.
Une fois passé sous un vrai PC avec Windows XP et Excel 2007, les zones de textes sont anarchiques.
Idem avec un autre vrai PC sous Windows 7 et Excel 2010.
J'introduis donc une définition des zones d'impression dans un modulé qui est appelé avant l'impression.
Résultat :
pour le vrai PC sous Excel 2007 ça marche, mais pour le vrai PC sous Excel 2010 c'est toujours anarchique.
Je suis assez perplexe!
Ci après le code d'impression avec le module appelé :
Private Sub Boutonedition_Click()
Call Module1.zoneimp
vb = Application.Dialogs(9).Show
If vb = True Then
Application.ScreenUpdating = False
Sheets(Array("PAGE 1", "PAGE 2", "PAGE 3", "PAGE 4", "PAGE 5", "PAGE 6", "PAGE 7", "PAGE 8", "PAGE 9", "PAGE 10", "PAGE 11")).PrintOut copies:=1, collate:=True
Application.ScreenUpdating = False
End If
End Sub
Sub zoneimp()
Dim p1 As Worksheet
Dim p2 As Worksheet
Dim p3 As Worksheet
Dim p4 As Worksheet
Dim p5 As Worksheet
Dim p6 As Worksheet
Dim p7 As Worksheet
Dim p8 As Worksheet
Dim p9 As Worksheet
Dim p10 As Worksheet
Dim p11 As Worksheet
Set p1 = Sheets("PAGE 11")
With p1
.PageSetup.PrintArea = "A1:J49"
End With
Set p2 = Sheets("PAGE 2")
With p2
.PageSetup.PrintArea = "A1:L48"
End With
Set p3 = Sheets("PAGE 3")
With p3
.PageSetup.PrintArea = "A8:N70"
End With
Set p4 = Sheets("PAGE 4")
With p4
.PageSetup.PrintArea = "A1:N70"
End With
Set p5 = Sheets("PAGE 5")
With p5
.PageSetup.PrintArea = "A1:N70"
End With
Set p6 = Sheets("PAGE 6")
With p6
.PageSetup.PrintArea = "A1:N70"
End With
Set p7 = Sheets("PAGE 7")
With p7
.PageSetup.PrintArea = "A1:H73"
End With
Set p8 = Sheets("PAGE 8")
With p8
.PageSetup.PrintArea = "A1:G71"
End With
Set p9 = Sheets("PAGE 9")
With p9
.PageSetup.PrintArea = "A1:H73"
End With
Set p10 = Sheets("PAGE 10")
With p10
.PageSetup.PrintArea = "A1:O63"
End With
Set p11 = Sheets("PAGE 11")
With p11
.PageSetup.PrintArea = "A1:O63"
End With
End Sub
Plus habitué à me débrouiller en fouinant dans les forums qu'à poster dedans, veuillez excuser par avance une éventuelle maladresse.
Je suis actuellement en train de finaliser une macro réalisée à partir d'Excel 2007, le but est de la faire tourner sur Excel 2007 et Excel 2010.
99% de la macro marchent mais la partie d'impression des divers onglets du classeur pose problème.
Je m'explique :
Plusieurs onglets, 11 pour être précis, doivent s'imprimer à la demande de l'utilisateur.
Pour ce faire j'ai défini manuellement (directement avec Excel, pas en vba) les diverses zones d'impression de chaque onglet.
Sur ma machine (Excel 2007 sur Windows XP émulé depuis un Mac, vous suivez toujours?!) tout fonctionne.
Une fois passé sous un vrai PC avec Windows XP et Excel 2007, les zones de textes sont anarchiques.
Idem avec un autre vrai PC sous Windows 7 et Excel 2010.
J'introduis donc une définition des zones d'impression dans un modulé qui est appelé avant l'impression.
Résultat :
pour le vrai PC sous Excel 2007 ça marche, mais pour le vrai PC sous Excel 2010 c'est toujours anarchique.
Je suis assez perplexe!
Ci après le code d'impression avec le module appelé :
Private Sub Boutonedition_Click()
Call Module1.zoneimp
vb = Application.Dialogs(9).Show
If vb = True Then
Application.ScreenUpdating = False
Sheets(Array("PAGE 1", "PAGE 2", "PAGE 3", "PAGE 4", "PAGE 5", "PAGE 6", "PAGE 7", "PAGE 8", "PAGE 9", "PAGE 10", "PAGE 11")).PrintOut copies:=1, collate:=True
Application.ScreenUpdating = False
End If
End Sub
Sub zoneimp()
Dim p1 As Worksheet
Dim p2 As Worksheet
Dim p3 As Worksheet
Dim p4 As Worksheet
Dim p5 As Worksheet
Dim p6 As Worksheet
Dim p7 As Worksheet
Dim p8 As Worksheet
Dim p9 As Worksheet
Dim p10 As Worksheet
Dim p11 As Worksheet
Set p1 = Sheets("PAGE 11")
With p1
.PageSetup.PrintArea = "A1:J49"
End With
Set p2 = Sheets("PAGE 2")
With p2
.PageSetup.PrintArea = "A1:L48"
End With
Set p3 = Sheets("PAGE 3")
With p3
.PageSetup.PrintArea = "A8:N70"
End With
Set p4 = Sheets("PAGE 4")
With p4
.PageSetup.PrintArea = "A1:N70"
End With
Set p5 = Sheets("PAGE 5")
With p5
.PageSetup.PrintArea = "A1:N70"
End With
Set p6 = Sheets("PAGE 6")
With p6
.PageSetup.PrintArea = "A1:N70"
End With
Set p7 = Sheets("PAGE 7")
With p7
.PageSetup.PrintArea = "A1:H73"
End With
Set p8 = Sheets("PAGE 8")
With p8
.PageSetup.PrintArea = "A1:G71"
End With
Set p9 = Sheets("PAGE 9")
With p9
.PageSetup.PrintArea = "A1:H73"
End With
Set p10 = Sheets("PAGE 10")
With p10
.PageSetup.PrintArea = "A1:O63"
End With
Set p11 = Sheets("PAGE 11")
With p11
.PageSetup.PrintArea = "A1:O63"
End With
End Sub