Imprimer X pages depuis bouton sur autre page

Bonsoir la communauté,

Est-il possible d'imprimer plusieurs pages depuis un bouton situé dans un autre onglet ?

J'ai bricolé du code dans le Module1 dans le fichier joint (Excel 2010).

Merci pour votre aide.

PS : les onglets pourrait être déplacés à droite ou à gauche (ne pas utiliser count svp)

Tchotcho31270

Bonjour,

à tester,

Sub Test_apercu_print()
With Sheets("Stats population").PageSetup
    .PrintArea = "C4:M26"
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

With Sheets("Stats métiers").PageSetup
    .PrintArea = "D5:N27"
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

With Sheets("Stats générales").PageSetup
    .PrintArea = "E6:O28"
    .FitToPagesWide = 1
    .FitToPagesTall = 1
End With

Sheets(Array("Stats population", "Stats métiers", "Stats générales")).PrintPreview
End Sub

Bonjour i20100,

Merci pour cette Macro qui fonctionne parfaitement.

J'ai ajouté d'autres arguments pour personnaliser un peu plus l'impression.

Peux-tu me donner ton avis ?

Bonne journée.

François

'****************************************

'IMPRIMER 3 PAGES DEPUIS LA PAGE ACCUEIL

'****************************************

Sub ButtonPrintStats()

With Sheets("Stats population").PageSetup

.PrintArea = "C4:M26" 'Zone d'impression

.FitToPagesWide = 1

.FitToPagesTall = 1

End With

With Sheets("Stats métiers").PageSetup

.PrintArea = "D5:N27" 'Zone d'impression

.FitToPagesWide = 1

.FitToPagesTall = 1

End With

With Sheets("Stats générales").PageSetup

.PrintArea = "E6:O28" 'Zone d'impression

.FitToPagesWide = 1

.FitToPagesTall = 1

End With

With Sheets("Stats population").PageSetup

.LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche

.RightMargin = Application.InchesToPoints(0.1) 'Marge droite

.TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top

.BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire

.Orientation = xlLandscape 'Paysage

'.Orientation = xlPortrait 'Portrait

End With

With Sheets("Stats métiers").PageSetup

.LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche

.RightMargin = Application.InchesToPoints(0.1) 'Marge droite

.TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top

.BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire

.Orientation = xlLandscape 'Paysage

'.Orientation = xlPortrait 'Portrait

End With

With Sheets("Stats générales").PageSetup

.LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche

.RightMargin = Application.InchesToPoints(0.1) 'Marge droite

.TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top

.BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire

.Orientation = xlLandscape 'Paysage

'.Orientation = xlPortrait 'Portrait

End With

Sheets(Array("Stats population", "Stats métiers", "Stats générales")).PrintPreview 'Prévisualiser

End Sub

3print-xpages.xlsm (34.72 Ko)

re,

essai comme ça,

Sub ButtonPrintStats()
With Sheets("Stats population").PageSetup
.PrintArea = "C4:M26" 'Zone d'impression
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
.RightMargin = Application.InchesToPoints(0.1) 'Marge droite
.TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
.BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
.Orientation = xlLandscape 'Paysage
'.Orientation = xlPortrait 'Portrait
End With

With Sheets("Stats métiers").PageSetup
.PrintArea = "D5:N27" 'Zone d'impression
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
.RightMargin = Application.InchesToPoints(0.1) 'Marge droite
.TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
.BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
.Orientation = xlLandscape 'Paysage
'.Orientation = xlPortrait 'Portrait
End With

With Sheets("Stats générales").PageSetup
.PrintArea = "E6:O28" 'Zone d'impression
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
.RightMargin = Application.InchesToPoints(0.1) 'Marge droite
.TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
.BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
.Orientation = xlLandscape 'Paysage
'.Orientation = xlPortrait 'Portrait
End With

Sheets(Array("Stats population", "Stats métiers", "Stats générales")).PrintPreview 'Prévisualiser
End Sub

Merci c'est SUPER !! Le code est plus compact et bien plus facile à travailler.

Sans vouloir en ajouter, j'ai une complication inattendue si certains ou tous les onglets sont masqués.

Erreur à la ligne : Sheets(Array("Stats population", "Stats métiers", "Stats générales")).PrintPreview

En effet, j'aimerai les laisser dans le même état de départ, qu'ils soient masqués ou qu'ils soient affichés sans que cela empêche l'impression.

Désolé d'en ajouter

François

re,

voici un autre possibilité,

Sub ButtonPrintStats()
sh = Array("Stats population", "Stats métiers", "Stats générales")
addr = Array("C4:M26", "D5:N27", "E6:O28")

For i = LBound(sh) To LBound(sh)
    With Sheets(sh(i)).PageSetup
    .PrintArea = addr(i) 'Zone d'impression
    .FitToPagesWide = 1
    .FitToPagesTall = 1
    .LeftMargin = Application.InchesToPoints(0.8) 'Marge gauche
    .RightMargin = Application.InchesToPoints(0.1) 'Marge droite
    .TopMargin = Application.InchesToPoints(0.8) 'Marge haut de page ou top
    .BottomMargin = Application.InchesToPoints(0.8) 'Marge bas de page si nécessaire
    .Orientation = xlLandscape 'Paysage
    '.Orientation = xlPortrait 'Portrait
    End With

    With sh(i)
    .Visible = True
    .PrintPreview 'Prévisualiser
    .Visible = False
    End With
Next

End Sub

La dernière macro ne fonctionne pas (voir en PJ).

Il semblerait que je ne puisse plus paramétrer mes marges individuellement dans chaque feuille ?

Quant est-il des onglets masqués ? > est-ce-qu'ils resteraient dans leur état initial après impression ?

François

Il semblerait que je ne puisse plus paramétrer mes marges individuellement dans chaque feuille ?

Quant est-il des onglets masqués ? > est-ce-qu'ils resteraient dans leur état initial après impression ?

1 - les marges étaient les même pour les 3 feuilles..

2 - oui

1. Non, les marges étaient identique dans le fichier exemple mais pas dans mon fichier de travail.

2. Ok pour le rétablissement des onglets

re,

pourquoi mettre des marges différente puisqu'il y a un ajustement en largeur et hauteur ?

    .FitToPagesWide = 1
    .FitToPagesTall = 1

Parce-que ce sont des pages de présentation différentes, avec des positionnement différents dans chaque page.

Merci de mettre fin à mes souffrances.

re,

au lieu de mettre les variables dans un Array,

tu pourrais créer une page qui contiendrait toutes les variables. (cette page pourrais être masqué)

et de là on pourrais faire une boucle.

est ce que cette idée te conviendrais ?

Le problème c'est que mon fichier contient plus de 50 pages.

Si je pouvais éviter de créer encore une page, je préférerai.

L'idée des Array me convient bien car chaque requête sera propre à sa macro.

François

re,

voici l'exemple, l'onglet "print" n'est pas masqué mais pourrait l'être.

je pourrais aussi mettre les variables dans des Array

Merci I20100,

J'aurais préféré avec des Array, mais ça me convient très bien.

Désolé pour mes nombreuses sollicitations.

Merci beaucoup pour ton aide et tes contributions dans ce forum.

Très bonne soirée.

François

Rechercher des sujets similaires à "imprimer pages bouton page"