Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

zone d'impression

30 réponses
Avatar
gilles
bonjour,
sur un fichier avec 50 onglets, en xp et en xl2003,
tous mes onglets ont 1 seule page à imprimer mais à l'aperçu, la zône
d'impression fait 2, 4 pages
comment faire par macro pour imposer la zone d'impression à toutes les pages
du classeur, à partir de l'onglet 6 , sans le faire onglet par onglet ??
ci dessous code essayé sans succès:

Sub repriseMarges()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 6 To ActiveWorkbook.Sheets.Count
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.PageSetup.PrintArea = "$A$1:$A$29"
ActiveSheet.PageSetup.PrintArea = "$A$1:$A$50"
ActiveWindow.View = xlNormalView
ActiveWindow.SmallScroll Down:=6
ActiveWindow.SelectedSheets.PrintPreview
ActiveWindow.SmallScroll Down:=-15
ActiveWindow.View = xlNormalView
Next i
End Sub

MERCI de votre aide
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...

10 réponses

1 2 3
Avatar
lSteph
ne semble pas nécessaire , en fait quand tu fais une Mise En page
(sans vba)
tu choisis bien soit un facteur de zoom soit une disposition en nombre
de page
et c'est généralement l'un qui doit s'adapter à l'autre, ...non?

Il y a peut être d'autres façons...

@+


On 13 août, 16:48, dunkelzahn wrote:
bonjour,

Au moment où je saisissais mon texte, ce message n'était pas encore
apparent. Mais le .zoom n'est il pas nécessaire à paramétrer ?

On 13 août, 16:22, lSteph wrote:

> bonjour,
> je répondais à Gilles , ceci suffit:

> Sub mpg()
> Dim sh As Worksheet

> For Each sh In ActiveWorkbook.Worksheets
> If sh.Index > 5 Then _
> with sh.PageSetup
> .PrintArea = "$A$1:$A$50"
> .FitToPagesWide = 1
> .FitToPagesTall = 1
> end with
> Next

> End Sub

> On 13 août, 16:19, dunkelzahn wrote :

> > bonjour,

> > Je pense qu'en fait tu voudrais redimmensionner à l'impression la z one
> > imprimable de ta feuille sur une seule page.

> > Il faut regarder dans pagestup.zoom
> > Voici l'exemple qui peut s'appliquer à ton code (repris de l'aide) :

> > With Worksheets("Sheet1").PageSetup
> > .Zoom = False
> > .FitToPagesTall = 1
> > .FitToPagesWide = 1
> > End With

> > On 13 août, 16:08, lSteph wrote:

> > > Re,

> > > ..attention, si tu dis que

> > > ....le code de Michel ... j'ai toujours etr 2 et 9

> > > > pages à l'aperçu, par onglet
> > > ..
> > > > Le code de Steph ... j'ai encore kek onglets qui
> > > > persistent à 2 pages

> > > tu as demandé selon ma compréhension de définir la même zon e
> > > d'impression pour tous les onglets de feuille de calcul à partir du
> > > 6ème.
> > > Cela ne remets en cause le nombre de pages nécessaires pour
> > > l'affichage des zones correspondantes de chaque onglet

> > > --
> > > lSteph- Masquer le texte des messages précédents -

> - Afficher le texte des messages précédents -


Avatar
gilles
Re-bonjour à tous,
houla ...vous travaillez beaaucoup plus vite que moi!!
Pour Michel...effectivement, j'ai pas remplacé preview...

Pour lSteph
petite précision, effectivement...
ce que je souhaite faire c'est lancer l'impression de tous les onglets que
j'ai selectionnés via une liste de tous les onglets du classeur, ou je place
un "X" devant le nom des onglets que je souhaite imprimer
Mon pb, c'est que si je lance 10 onglets, je me retrouve avec 15 ou 20
feuilles de papier
Je souhaites donce limiter la zone d'impression à la page 1, et ce, pour
chacun des onglets
peut-être serait-il plus simple de préciser q'il n'imprime QUE la page 1

Mes excuses pour ce manque de clarté dans l'énoncé de ma question

MERCI encore
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"lSteph" a écrit :

Bonjour,
que tu passes par un For.. to ..next ou For each.. in ..VBA fera
toujours feuille par feuille
ne pas être en groupe de travail pour effectuer la manoeuvre.

Sub mpg()
Dim sh As Worksheet

For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 5 Then _
sh.PageSetup.PrintArea = "$A$1:$A$50"
Next

End Sub

'lSteph

On 13 août, 13:40, gilles wrote:
> bonjour,
> sur un fichier avec 50 onglets, en xp et en xl2003,
> tous mes onglets ont 1 seule page à imprimer mais à l'aperçu, la zône
> d'impression fait 2, 4 pages
> comment faire par macro pour imposer la zone d'impression à toutes les pages
> du classeur, à partir de l'onglet 6 , sans le faire onglet par onglet ??
> ci dessous code essayé sans succès:
>
> Sub repriseMarges()
> Application.ScreenUpdating = False
> Application.DisplayAlerts = False
> For i = 6 To ActiveWorkbook.Sheets.Count
> ActiveWindow.View = xlPageBreakPreview
> ActiveSheet.PageSetup.PrintArea = "$A$1:$A$29"
> ActiveSheet.PageSetup.PrintArea = "$A$1:$A$50"
> ActiveWindow.View = xlNormalView
> ActiveWindow.SmallScroll Down:=6
> ActiveWindow.SelectedSheets.PrintPreview
> ActiveWindow.SmallScroll Down:=-15
> ActiveWindow.View = xlNormalView
> Next i
> End Sub
>
> MERCI de votre aide
> --
> en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
> mais à chaque jour suffit sa peine...




Avatar
lSteph
... je remets donc pour la mise en page(supposant que tu as déjà ta
macro pour l'impression)

Sub mpg()
Dim sh As Worksheet

For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 5 Then _
with sh.PageSetup
.PrintArea = "$A$1:$A$50"
.FitToPagesWide = 1
.FitToPagesTall = 1
end with
Next

End Sub

'lSteph

Re-bonjour à tous,
houla ...vous travaillez beaaucoup plus vite que moi!!
Pour Michel...effectivement, j'ai pas remplacé preview...

Pour lSteph
petite précision, effectivement...
ce que je souhaite faire c'est lancer l'impression de tous les onglets qu e
j'ai selectionnés via une liste de tous les onglets du classeur, ou je place
un "X" devant le nom des onglets que je souhaite imprimer
Mon pb, c'est que si je lance 10 onglets, je me retrouve avec 15 ou 20
feuilles de papier
Je souhaites donce limiter la zone d'impression à la page 1, et ce, pou r
chacun des onglets
peut-être serait-il plus simple de préciser q'il n'imprime QUE la pag e 1

Mes excuses pour ce manque de clarté dans l'énoncé de ma question

MERCI encore
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'h ui,
mais à chaque jour suffit sa peine...

"lSteph" a écrit :

> Bonjour,
> que tu passes par un For.. to ..next ou For each.. in ..VBA fera
> toujours feuille par feuille
> ne pas être en groupe de travail pour effectuer la manoeuvre.

> Sub mpg()
> Dim sh As Worksheet

> For Each sh In ActiveWorkbook.Worksheets
> If sh.Index > 5 Then _
> sh.PageSetup.PrintArea = "$A$1:$A$50"
> Next

> End Sub

> 'lSteph

> On 13 août, 13:40, gilles wrote:
> > bonjour,
> > sur un fichier avec 50 onglets, en xp et en xl2003,
> > tous mes onglets ont 1 seule page à imprimer mais à l'aperçu, l a zône
> > d'impression fait 2, 4 pages
> > comment faire par macro pour imposer la zone d'impression à toutes les pages
> > du classeur, à partir de l'onglet 6 , sans le faire onglet par ongl et ??
> > ci dessous code essayé sans succès:

> > Sub repriseMarges()
> > Application.ScreenUpdating = False
> > Application.DisplayAlerts = False
> > For i = 6 To ActiveWorkbook.Sheets.Count
> > ActiveWindow.View = xlPageBreakPreview
> > ActiveSheet.PageSetup.PrintArea = "$A$1:$A$29"
> > ActiveSheet.PageSetup.PrintArea = "$A$1:$A$50"
> > ActiveWindow.View = xlNormalView
> > ActiveWindow.SmallScroll Down:=6
> > ActiveWindow.SelectedSheets.PrintPreview
> > ActiveWindow.SmallScroll Down:=-15
> > ActiveWindow.View = xlNormalView
> > Next i
> > End Sub

> > MERCI de votre aide
> > --
> > en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujou rd'hui,
> > mais à chaque jour suffit sa peine...


Avatar
LSteph
...j'oubliais de dire que tu ne peux pas dire cela du code de MD, il
fait la même chose mais avec quelques plus que tu n'avais pas envisagé
Certes il utilise une autre méthode mais qui serait amha possiblement
mieux puisqu'il utilise une variable integer pour sa boucle en tant
qu'indice de collection, ce qui est relativement plus léger que la
variable objet.

Mais comme tu l'as dit plus loin tu n'avais pas précisé.

J'espère que tu prendras donc le temps(parfois on ne l'a pas et
d'autres on le prend qd même) de lire avec attention l'ensemble des
réponses qui t'ont été proposées. J'ai bien noté que tu étais pressé
mais le temps qu'on prend parfois est un gain par la suite.

@bientôt

--
lSteph

gilles a écrit :
Re-bonjour
et merci de votre aide
j'ai utilisé le code de Michel qui ne donne rien: j'ai toujours etr 2 et 9
pages à l'aperçu, par onglet
de plus, le code ne ferme pas l'aperçu, à chaque onglet
Le code de Steph semble mieux, mais bizarrement j'ai encore kek onglets qui
persistent à 2 pages
je peaufine ça
mais de toutes façons, merci
Gilles


Avatar
gilles
BONSOIR lsteph
effectivement mon code pour imprimer fonctionne...
j'ai testé tes 2 derniers codes
y a un truc que je pige pas :
quand je lance la macro j'ai un message qui me dit :

erreur de compilation
end if sans if (alors qu'il n' y a pas end if)

si je rajoute end if: même chose
si j'enlève le trait après Then:
j'ai un message:
erreur de compilation next sans for (alors qu'il ya for et next)
D'ou ça peut venir?
merci

--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"lSteph" a écrit :

... je remets donc pour la mise en page(supposant que tu as déjà ta
macro pour l'impression)

Sub mpg()
Dim sh As Worksheet

For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 5 Then _
with sh.PageSetup
.PrintArea = "$A$1:$A$50"
.FitToPagesWide = 1
.FitToPagesTall = 1
end with
Next

End Sub

'lSteph

> Re-bonjour à tous,
> houla ...vous travaillez beaaucoup plus vite que moi!!
> Pour Michel...effectivement, j'ai pas remplacé preview...
>
> Pour lSteph
> petite précision, effectivement...
> ce que je souhaite faire c'est lancer l'impression de tous les onglets que
> j'ai selectionnés via une liste de tous les onglets du classeur, ou je place
> un "X" devant le nom des onglets que je souhaite imprimer
> Mon pb, c'est que si je lance 10 onglets, je me retrouve avec 15 ou 20
> feuilles de papier
> Je souhaites donce limiter la zone d'impression à la page 1, et ce, pour
> chacun des onglets
> peut-être serait-il plus simple de préciser q'il n'imprime QUE la page 1
>
> Mes excuses pour ce manque de clarté dans l'énoncé de ma question
>
> MERCI encore
> --
> en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
> mais à chaque jour suffit sa peine...
>
> "lSteph" a écrit :
>
> > Bonjour,
> > que tu passes par un For.. to ..next ou For each.. in ..VBA fera
> > toujours feuille par feuille
> > ne pas être en groupe de travail pour effectuer la manoeuvre.
>
> > Sub mpg()
> > Dim sh As Worksheet
>
> > For Each sh In ActiveWorkbook.Worksheets
> > If sh.Index > 5 Then _
> > sh.PageSetup.PrintArea = "$A$1:$A$50"
> > Next
>
> > End Sub
>
> > 'lSteph
>
> > On 13 août, 13:40, gilles wrote:
> > > bonjour,
> > > sur un fichier avec 50 onglets, en xp et en xl2003,
> > > tous mes onglets ont 1 seule page à imprimer mais à l'aperçu, la zône
> > > d'impression fait 2, 4 pages
> > > comment faire par macro pour imposer la zone d'impression à toutes les pages
> > > du classeur, à partir de l'onglet 6 , sans le faire onglet par onglet ??
> > > ci dessous code essayé sans succès:
>
> > > Sub repriseMarges()
> > > Application.ScreenUpdating = False
> > > Application.DisplayAlerts = False
> > > For i = 6 To ActiveWorkbook.Sheets.Count
> > > ActiveWindow.View = xlPageBreakPreview
> > > ActiveSheet.PageSetup.PrintArea = "$A$1:$A$29"
> > > ActiveSheet.PageSetup.PrintArea = "$A$1:$A$50"
> > > ActiveWindow.View = xlNormalView
> > > ActiveWindow.SmallScroll Down:=6
> > > ActiveWindow.SelectedSheets.PrintPreview
> > > ActiveWindow.SmallScroll Down:=-15
> > > ActiveWindow.View = xlNormalView
> > > Next i
> > > End Sub
>
> > > MERCI de votre aide
> > > --
> > > en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
> > > mais à chaque jour suffit sa peine...




Avatar
gilles
...suite
et en final ça marche maisles onglets comportent toujours une zone
d'impression de 2 pages ou plus
à+
Gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"lSteph" a écrit :

... je remets donc pour la mise en page(supposant que tu as déjà ta
macro pour l'impression)

Sub mpg()
Dim sh As Worksheet

For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 5 Then _
with sh.PageSetup
.PrintArea = "$A$1:$A$50"
.FitToPagesWide = 1
.FitToPagesTall = 1
end with
Next

End Sub

'lSteph

> Re-bonjour à tous,
> houla ...vous travaillez beaaucoup plus vite que moi!!
> Pour Michel...effectivement, j'ai pas remplacé preview...
>
> Pour lSteph
> petite précision, effectivement...
> ce que je souhaite faire c'est lancer l'impression de tous les onglets que
> j'ai selectionnés via une liste de tous les onglets du classeur, ou je place
> un "X" devant le nom des onglets que je souhaite imprimer
> Mon pb, c'est que si je lance 10 onglets, je me retrouve avec 15 ou 20
> feuilles de papier
> Je souhaites donce limiter la zone d'impression à la page 1, et ce, pour
> chacun des onglets
> peut-être serait-il plus simple de préciser q'il n'imprime QUE la page 1
>
> Mes excuses pour ce manque de clarté dans l'énoncé de ma question
>
> MERCI encore
> --
> en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
> mais à chaque jour suffit sa peine...
>
> "lSteph" a écrit :
>
> > Bonjour,
> > que tu passes par un For.. to ..next ou For each.. in ..VBA fera
> > toujours feuille par feuille
> > ne pas être en groupe de travail pour effectuer la manoeuvre.
>
> > Sub mpg()
> > Dim sh As Worksheet
>
> > For Each sh In ActiveWorkbook.Worksheets
> > If sh.Index > 5 Then _
> > sh.PageSetup.PrintArea = "$A$1:$A$50"
> > Next
>
> > End Sub
>
> > 'lSteph
>
> > On 13 août, 13:40, gilles wrote:
> > > bonjour,
> > > sur un fichier avec 50 onglets, en xp et en xl2003,
> > > tous mes onglets ont 1 seule page à imprimer mais à l'aperçu, la zône
> > > d'impression fait 2, 4 pages
> > > comment faire par macro pour imposer la zone d'impression à toutes les pages
> > > du classeur, à partir de l'onglet 6 , sans le faire onglet par onglet ??
> > > ci dessous code essayé sans succès:
>
> > > Sub repriseMarges()
> > > Application.ScreenUpdating = False
> > > Application.DisplayAlerts = False
> > > For i = 6 To ActiveWorkbook.Sheets.Count
> > > ActiveWindow.View = xlPageBreakPreview
> > > ActiveSheet.PageSetup.PrintArea = "$A$1:$A$29"
> > > ActiveSheet.PageSetup.PrintArea = "$A$1:$A$50"
> > > ActiveWindow.View = xlNormalView
> > > ActiveWindow.SmallScroll Down:=6
> > > ActiveWindow.SelectedSheets.PrintPreview
> > > ActiveWindow.SmallScroll Down:=-15
> > > ActiveWindow.View = xlNormalView
> > > Next i
> > > End Sub
>
> > > MERCI de votre aide
> > > --
> > > en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
> > > mais à chaque jour suffit sa peine...




Avatar
LSteph
exact!comme quoi tu lis bien ;-)
reprends ainsi le tout

'''''
Sub mpg()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 5 Then
with sh.PageSetup
.PrintArea = "$A$1:$A$50"
.FitToPagesWide = 1
.FitToPagesTall = 1
end with
end if
Next
end sub
'''''

'lsteph
'dis moi si c'est ok!

gilles a écrit :
BONSOIR lsteph
effectivement mon code pour imprimer fonctionne...
j'ai testé tes 2 derniers codes
y a un truc que je pige pas :
quand je lance la macro j'ai un message qui me dit :

erreur de compilation
end if sans if (alors qu'il n' y a pas end if)

si je rajoute end if: même chose
si j'enlève le trait après Then:
j'ai un message:
erreur de compilation next sans for (alors qu'il ya for et next)
D'ou ça peut venir?
merci



Avatar
LSteph
Alors c'est probablement que cela ne peut pas y tenir

essaie de jouer sur les marges

gilles a écrit :
...suite
et en final ça marche maisles onglets comportent toujours une zone
d'impression de 2 pages ou plus
à+
Gilles


Avatar
LSteph
..ou il y a des sauts de page qui trainent

gilles a écrit :
...suite
et en final ça marche maisles onglets comportent toujours une zone
d'impression de 2 pages ou plus
à+
Gilles


Avatar
gilles
non
j'avais modifié comme ta proposition, mais comme je te le disais, j'ai
toujours plusieurs pages par onglet
pourtant ton code m'a l'air bien
à+
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"LSteph" a écrit :

exact!comme quoi tu lis bien ;-)
reprends ainsi le tout

'''''
Sub mpg()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If sh.Index > 5 Then
with sh.PageSetup
.PrintArea = "$A$1:$A$50"
.FitToPagesWide = 1
.FitToPagesTall = 1
end with
end if
Next
end sub
'''''

'lsteph
'dis moi si c'est ok!

gilles a écrit :
> BONSOIR lsteph
> effectivement mon code pour imprimer fonctionne...
> j'ai testé tes 2 derniers codes
> y a un truc que je pige pas :
> quand je lance la macro j'ai un message qui me dit :
>
> erreur de compilation
> end if sans if (alors qu'il n' y a pas end if)
>
> si je rajoute end if: même chose
> si j'enlève le trait après Then:
> j'ai un message:
> erreur de compilation next sans for (alors qu'il ya for et next)
> D'ou ça peut venir?
> merci
>



1 2 3