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
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'h ui,
mais à chaque jour suffit sa peine...


Avatar
michdenis
Comme la macro utilise l'index des feuilles pour
déterminer celle qui seront imprimés, tu aurais
avantage à protéger TON CLASSEUR pour
empêcher qu'un usager modifie l'ordre des
onglets de la feuille.

PrintArea = "$A$1:$A$50"
la même plage pour toutes les feuilles
Tu ne peux déterminer qu'une plage à imprimer à la fois.

Au besoin avant de lancer l'impression, il est toujours possible
de masquer des lignes ou colonnes que l'on ne désire pas
imprimer.


'-----------------------------------------
Sub repriseMarges()

With ThisWorkbook
For i = 6 To Worksheets.Count
With Worksheets(i)
.PageSetup.PrintArea = "$A$1:$A$50"
'Tu remplace par PrintOut pour imprimer
.PrintPreview
.PageSetup.PrintArea = ""
End With
Next
End With
End Sub
'-----------------------------------------



"gilles" a écrit dans le message de news:

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
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
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"michdenis" a écrit :

Comme la macro utilise l'index des feuilles pour
déterminer celle qui seront imprimés, tu aurais
avantage à protéger TON CLASSEUR pour
empêcher qu'un usager modifie l'ordre des
onglets de la feuille.

PrintArea = "$A$1:$A$50"
la même plage pour toutes les feuilles
Tu ne peux déterminer qu'une plage à imprimer à la fois.

Au besoin avant de lancer l'impression, il est toujours possible
de masquer des lignes ou colonnes que l'on ne désire pas
imprimer.


'-----------------------------------------
Sub repriseMarges()

With ThisWorkbook
For i = 6 To Worksheets.Count
With Worksheets(i)
.PageSetup.PrintArea = "$A$1:$A$50"
'Tu remplace par PrintOut pour imprimer
.PrintPreview
.PageSetup.PrintArea = ""
End With
Next
End With
End Sub
'-----------------------------------------



"gilles" a écrit dans le message de news:

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
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 zone
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
Avatar
michdenis
ceci devrait aller :

Évidemment, la fenêtre prévisualisation ne se
ferme pas toute seule. c'est pour te permettre
de voir si tout se déroule comme prévu.

Lorsque tu es satisfait, tu remplaces comme dis
dans la procédure . PrintPreview par Printout et
la fenêtre de prévisualisation ne s'affichera plus.

'---------------------------------
Sub repriseMarges()

With ThisWorkbook
For i = 1 To Worksheets.Count
With Feuil1 ' Worksheets(i)
.PageSetup.PrintArea = "$A$1:$A$50"
.PageSetup.FitToPagesTall = 1
.PageSetup.FitToPagesWide = 1
'Tu remplace par PrintOut pour imprimer
.PrintPreview
.PageSetup.PrintArea = ""
End With
Next
End With
End Sub
'---------------------------------




"gilles" a écrit dans le message de news:

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
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'hui,
mais à chaque jour suffit sa peine...


"michdenis" a écrit :

Comme la macro utilise l'index des feuilles pour
déterminer celle qui seront imprimés, tu aurais
avantage à protéger TON CLASSEUR pour
empêcher qu'un usager modifie l'ordre des
onglets de la feuille.

PrintArea = "$A$1:$A$50"
la même plage pour toutes les feuilles
Tu ne peux déterminer qu'une plage à imprimer à la fois.

Au besoin avant de lancer l'impression, il est toujours possible
de masquer des lignes ou colonnes que l'on ne désire pas
imprimer.


'-----------------------------------------
Sub repriseMarges()

With ThisWorkbook
For i = 6 To Worksheets.Count
With Worksheets(i)
.PageSetup.PrintArea = "$A$1:$A$50"
'Tu remplace par PrintOut pour imprimer
.PrintPreview
.PageSetup.PrintArea = ""
End With
Next
End With
End Sub
'-----------------------------------------



"gilles" a écrit dans le message de
news:

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
Faut que tu précises dans ton pagesetup selon ton besoin largeur
longueur
.FitToPagesWide = 1
.FitToPagesTall = 2

'lSteph

On 13 août, 15:50, gilles wrote:
Re-bonjour
et merci de votre aide
j'ai utilisé le code de Michel qui ne donne rien: j'ai toujours etr 2 e t 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 q ui
persistent à 2 pages
je peaufine ça
mais de toutes façons, merci
Gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'h ui,
mais à chaque jour suffit sa peine...

"michdenis" a écrit :

> Comme la macro utilise l'index des feuilles pour
> déterminer celle qui seront imprimés, tu aurais
> avantage à protéger TON CLASSEUR pour
> empêcher qu'un usager modifie l'ordre des
> onglets de la feuille.

> PrintArea = "$A$1:$A$50"
> la même plage pour toutes les feuilles
> Tu ne peux déterminer qu'une plage à imprimer à la fois.

> Au besoin avant de lancer l'impression, il est toujours possible
> de masquer des lignes ou colonnes que l'on ne désire pas
> imprimer.

> '-----------------------------------------
> Sub repriseMarges()

> With ThisWorkbook
> For i = 6 To Worksheets.Count
> With Worksheets(i)
> .PageSetup.PrintArea = "$A$1:$A$50"
> 'Tu remplace par PrintOut pour imprimer
> .PrintPreview
> .PageSetup.PrintArea = ""
> End With
> Next
> End With
> End Sub
> '-----------------------------------------

> "gilles" a écrit dans le message d e news:
>
> 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 le s 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
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 = 2
end with
Next

End Sub

'lSteph



On 13 août, 15:50, gilles wrote:
Re-bonjour
et merci de votre aide
j'ai utilisé le code de Michel qui ne donne rien: j'ai toujours etr 2 e t 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 q ui
persistent à 2 pages
je peaufine ça
mais de toutes façons, merci
Gilles
--
en VBA aussi, ne remettons pas au lendemain ce qu'on peut faire aujourd'h ui,
mais à chaque jour suffit sa peine...

"michdenis" a écrit :

> Comme la macro utilise l'index des feuilles pour
> déterminer celle qui seront imprimés, tu aurais
> avantage à protéger TON CLASSEUR pour
> empêcher qu'un usager modifie l'ordre des
> onglets de la feuille.

> PrintArea = "$A$1:$A$50"
> la même plage pour toutes les feuilles
> Tu ne peux déterminer qu'une plage à imprimer à la fois.

> Au besoin avant de lancer l'impression, il est toujours possible
> de masquer des lignes ou colonnes que l'on ne désire pas
> imprimer.

> '-----------------------------------------
> Sub repriseMarges()

> With ThisWorkbook
> For i = 6 To Worksheets.Count
> With Worksheets(i)
> .PageSetup.PrintArea = "$A$1:$A$50"
> 'Tu remplace par PrintOut pour imprimer
> .PrintPreview
> .PageSetup.PrintArea = ""
> End With
> Next
> End With
> End Sub
> '-----------------------------------------

> "gilles" a écrit dans le message d e news:
>
> 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 le s 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
dunkelzahn
bonjour,

Je pense qu'en fait tu voudrais redimmensionner à l'impression la zone
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 zone
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


Avatar
lSteph
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 zone
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 zone
> 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


Avatar
dunkelzahn
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 zon e
> 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 zone
> > 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 -


1 2 3