Paramétrage de plusieurs feuilles simultané Portrait / Paysage

Bonjour cher forum

Après l'aide qu'Yvouille m'a fourni (et je l'en remercie!), je suis maintenant face à une autre barrière: la paramétrage des impressions.

En effet, lorsque je veux imprimer tous les documents, je voudrais pouvoir être en mesure de définir pour chaque feuille quel paramétrage associé.

J'ai réussi pour chaque document, mais l'ensemble des docs n'est plus de mon niveau..

Tout cela, à partir d'un code déjà existant.

Exemple :

Document 1 --> Paysage

Document 2 --> Portrait

J'ai pensé à ce code, mais apparemment, non

Else
        ActiveSheet.PageSetup.PrintArea = "A10:R49 , V60:BH130"

    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0)
        .RightMargin = Application.InchesToPoints(0)
        .TopMargin = Application.InchesToPoints(0)
        .BottomMargin = Application.InchesToPoints(0)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = True
        .CenterVertically = True
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 75
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        If ActiveSheet.PageSetup.PrintArea = "A10:R49" Then
        .Orientation = xlPortrait
        End If
         If ActiveSheet.PageSetup.PrintArea = "V60:BH130" Then
        .Orientation = xlLandscape
    End If

   Sheets("Feuil1").PrintPreview

Voici le fichier en pièce jointe

Belle journée

Bonjour FeitaN_, Yvouille,

En retour le fichier pour du simultané.

Voir aussi note rouge en haut de page. Et macro impression_Feuille.

Bonsoir X Cellus,

Merci beaucoup, je n'aurais même pas pensé au MsgBox, c'est fantastique VBA, je trouve !

Juste un petit bémol (haha sinon, ce n'est pas drôle), je ne m'en plains pas du tout mais pourquoi le code indique ceci :

Case "Document 2"
ActiveSheet.PageSetup.PrintArea = "V60:BH130"
With ActiveSheet.PageSetup
.Orientation = xlLandscape

Et le document 2 m'imprime en portrait ? (Comme je le veux )

Il y a peut-être quelques chose qui m'échappe..

Merci encore :)

Belle soirée

A nouveau,

En effet tu as l’œil.

C'est bien xlPortrait qu'il faut inscrire. J'ai copié un peu vite le code du dessus pour aller plus vite.

Et j'ai oublié de corriger.

Mais comme tu fais un préview avant pour choisir le document.

Et que c'est bien largement paramétré, cela semble mieux garder ce paramétrage.

Merci, c'est gentil !

J'ai intervertit, il n'y a aucune différence, nous allons rester sur cette note positive

J'ai également ajouter le zoom à 80% pour l'avoir sur la quasi totalité de la page, ainsi que des marges à 0

J'essaie de dupliquer ton aide sur mon fichier source.

Je te tiens au courant des avancés

Merci encore

Suite,

Bon courage alors. Le zoom c'est pratique.

Note qu'il fera l'impression sur l'imprimante par défaut. Le code n'en choisit pas spécialement une.

Et reviens si besoin...

Oui, pas de soucis (normalement ), parce que le paramétrage par défaut se fait au niveau de la base de l'ordi. Il n'y aura logiquement pas besoin de changer s'il n'y a qu'une imprimante mais à voir, si je passe par le pdf, ce n'est pas ma priorité pour l'instant.

Merci beaucoup pour ton aide encore une fois, je te suis redevable.

Belle soirée

A nouveau,

J'ai un tout petit blocage, lorsque je sélectionne le Doc1 à partir de la liste déroulante, excel comprend qu'il faut sortir tous les docs..

Est-ce qu'il est possible de m'aiguiller stp?

Voici le code dans le module 1:

Sub Impression_Feuille()

Application.PrintCommunication = True
Select Case [C5]

Case "Doc1"
ActiveSheet.PageSetup.PrintArea = "A38:R77"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
'

Case "Doc2"
ActiveSheet.PageSetup.PrintArea = "AE83:BQ153"
With ActiveSheet.PageSetup
.Orientation = xlPortrait
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
'

Case "Doc3"
ActiveSheet.PageSetup.PrintArea = "BS157:CJ198"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 70
End With
'

Case "Doc4"
ActiveSheet.PageSetup.PrintArea = "CK212:CO240"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
'

Case "Doc5"
ActiveSheet.PageSetup.PrintArea = "CW247:DC285"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
'

Case "Tous les Documents"

ActiveSheet.PageSetup.PrintArea = "A38:R77"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

ActiveSheet.PageSetup.PrintArea = "AE83:BQ153"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

ActiveSheet.PageSetup.PrintArea = "BS157:CJ198"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

ActiveSheet.PageSetup.PrintArea = "CK212:CO240"

With ActiveSheet.PageSetup
.Orientation = xlPortrait
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With

ActiveSheet.PageSetup.PrintArea = "CW247:DC285"

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Zoom = 80
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False

Application.PrintCommunication = True
End Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
Application.PrintCommunication = False
End Sub

Voici le code dans la feuille concernée:

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Address <> "$C$5" Then Exit Sub  'Liste déroulante

    If Range("C5") = "Doc1" Then
        ActiveSheet.PageSetup.PrintArea = "A38:R77"
        With ActiveSheet.PageSetup
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 70

    End With

    ElseIf Range("C5") = "Doc2" Then
        ActiveSheet.PageSetup.PrintArea = "AE83:BQ153"

        With ActiveSheet.PageSetup

        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 80

    End With

     ElseIf Range("C5") = "Doc3" Then
        ActiveSheet.PageSetup.PrintArea = "BS157:CJ198"

        With ActiveSheet.PageSetup

        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 70

    End With

     ElseIf Range("C5") = "Doc4" Then
        ActiveSheet.PageSetup.PrintArea = "CK212:CO240"

        With ActiveSheet.PageSetup

        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 80

    End With

       ElseIf Range("C5") = "Doc5" Then
        ActiveSheet.PageSetup.PrintArea = "CW247:DC285"

        With ActiveSheet.PageSetup

        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 80

    End With

    Else

        ActiveSheet.PageSetup.PrintArea = "A38:R77"
        With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = 70
        End With

        Sheets("Feuil1").PrintPreview
        MsgBox "Appuyez sur Ok pour voir l'autre document"

         ActiveSheet.PageSetup.PrintArea = "AE83:BQ153"
        With ActiveSheet.PageSetup
        .Orientation = xlPortrait
        .Zoom = 80
        End With

        Sheets("Feuil1").PrintPreview
        MsgBox "Appuyez sur Ok pour voir l'autre document"

         ActiveSheet.PageSetup.PrintArea = "BS157:CJ198"
        With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .Zoom = 70
        End With

        Sheets("Feuil1").PrintPreview
        MsgBox "Appuyez sur Ok pour voir l'autre document"

         ActiveSheet.PageSetup.PrintArea = "CK212:CO240"
        With ActiveSheet.PageSetup
        .Orientation = xlPortrait
        .Zoom = 80
        End With

    End If

   Sheets("Feuil1").PrintPreview
End Sub

Merci pour ton aide

Bonjour FeitaN_,

Bon, cela fait un trop long code... avec ce rajout de zones d'impressions

Avec des lignes qui se répètent beaucoup.

Je te laisse une version issue de la précédente où j'ai apporté des changements afin de réduire le code.

Vois si cela te convient. Et adapte le à ton fichier d'origine.

Bonsoir X Cellus,

J'espère que tu vas bien

Oui, je me disais bien hier soir que mes codes étaient beaucoup trop longs

Les nouveaux codes que tu m'as transmis sont synthétiques, c'est génial, merci ! Le bouton est également pas mal

Je viens de réussir à faire ressortir ce que je voulais. Par contre, une autre barrière s'est ajoutée (et oui, sinon, ce n'est pas marrant haha), la mise en page de certains de mes documents ne passent pas. Y aurait-il possibilité de personnaliser pour un document spécifique?

Par exemple, on garde la mise en page général, mais pour ce document.PageSetup, les "Setups" seront ça ?

Merci encore pour ton retour

Bonsoir Feita_,

Pour les documents qui ont la même mise en page SetUp on passe par un code généraliste succinct qui permet de ne pas répéter le code.

Pour un document particulier, il faut lui créer son propre code de SetUp. Et donc ne pas passer par le code généraliste.

Pour cela il faut le distinguer selon le nom du document. Ou une lettre finale qui le différencie des autres.

Ce qui permet de le diriger vers un autre SetUp.

Exemple Doc1, Doc2, Doc3 etc... vont vers le code général mais Doc4P non car il une lettre finale (pour Particulier) qui l'en détourne.

Cela pourrait être aussi Cour4. Ainsi ce n'est plus Doc (Document) mais Courrier.

Bien sur, à condition qu'il n'existe pas une multitudes de SetUp particuliers. En bref, une ou deux exception à la règle cela va. Plus tu va retomber dans un code plus étoffé.

X Cellus,

Yes, merci ton explication est claire. Je vais essayer d'appliquer ça.

Concernant le paramètre "flag", je vois qu'il est apposé sur l'orientation et sur le zoom

J'ai bien compris pour l'orientation mais comment indiqué le "flag" pour le zoom stp? C'est la 1ère fois que je vois cette fonction dans VBA

Merci pour ton retour

A nouveau,

Comme tu le dis

Juste un petit bémol (haha sinon, ce n'est pas drôle)

En fait, en corrigeant pour l'orientation j'ai oublié de modifier pour le zoom.

Donc il faut mettre 1, car ainsi il va récupérer la valeur donnée à l'orientation Landscape, donc le 1ier zoom, 70% (ou autre si préférable).

S'il ne trouve pas 1 (donc 2) il prendra le 2ième zoom, donc 80% dans l'exemple.

Ahh, en fait, l'instruction permet de donner une valeur et de lui attribuer une fonction, c'est bien ça ?

Je viens de mettre 2 du coup, j'ai bien compris.

Du coup, le nouveau code pour tous les docs est :

 'With ActiveSheet.PageSetup
        '.Orientation = xlLandscape
       ' End With
 Flag = 2
GoSub SetPage

J'ai mis en commentaire l'ancien

Merci beaucoup X Cellus ! Je continue :)

Suite,

Oui il est prévu dans le code générale pour les Doc1, Doc2.

Par contre pour Tous les Docs il y a bien l'orientation mais pas la propriété Zoom.

Donc il faut rajouter cela pour tous ceux qui sont en Landscape indiquer le Zoom et idem pour tous les docs qui sont en Portrait (autre zoom).

With ActiveSheet.PageSetup
        '.Orientation = xlLandscape
       ' End With
 Flag = 2
GoSub SetPage

C'est cela pour tous les docs qui sont paysage on peut mettre en commentaire comme tu fais (ou enlever les lignes).

Le Flag 2 permettra de choisir l'orientation Landscape et le zoom 70%

Le Flag 1 lui fera l'orientation Portrait et zoom 75%.

Oui, c'est exactement ça, comme je te l'ai indiqué précédemment, j'avais bien compris cette instruction et je la trouve super pratique avec un gain de temps et de mémoire considérables

Ah et j'ai enlevé toute la boucle "With"

J'ai fait le test il y a quelques minutes et ça marche bien

suite,

En fait avec IIF(valeur=x, 1ier choix, 2ième choix) c'est comme avec la formule SI d'Excel.

Si l'égalité valeur et x est vrai alors ce sera le 1ier choix sinon ce sera le 2ième.

AAAAHHH, cette fois, c'est plus claire expliqué comme ça !!

Désolé, je suis totalement novice en VBA haha

2 'I' pour changer dissocier excel de vba ou bien ?

à nouveau,

En fait deux I pour IIF car il existe en VBA déjà un I pour IF mais qui lui fonctionne comme cela:

IF x = 1 Then action 1 Else action 2. En traduisant Si x = 1 Alors ...

IIF comporte toujours une variable à sa gauche pour recevoir la donnée, la valeur...

Oui, en effet, après en fonction des situations, l'un sera plus avantageux que l'autre mais "IIF" reste tout de même une belle innovation

Je te souhaite une belle soirée et un bon repos, tu as l'art de la pédagogie et je t'en remercie :)

Rechercher des sujets similaires à "parametrage feuilles simultane portrait paysage"