Question: mode paysage et portrait

jbdubreuil

XLDnaute Occasionnel
Bonjour le forum,

J'ai une petite question:
J'ai un onglet excel avec des info: tableaux, graphs, text...
Je souhaite imprimer cet onglet sur deux pages.
La premiere page serait en mode "paysage", tandis que la deuxieme est en mode "portrait".
Est ce possible?

Merci par avance,

Bonne soirée,

JB
 

ya_v_ka

XLDnaute Impliqué
Re : Question: mode paysage et portrait

Hello

Possible cela est, par macro... et je pense que l'enregistreur de macro doit arriver à ça.
Dans l'ordre :
1. définir zone d'impression, choisir la direction et imprimer la 1ere page...
2. recommencer avec la seconde page...
3. idem pour la 3e...

Seul problème que je vois, si les zones à imprimer ne sont pas toujours les mêmes !

Et si ça ne prends pas... redit-le là...

Ya'v
 

jbdubreuil

XLDnaute Occasionnel
Re : Question: mode paysage et portrait

Hello le forum, ya v ka,

Effectivement on peut toujours passer pas une macro avec l'enregistreur et créer un bouton pour l'impression. Pour mon usage perso c'est ideal.
Mais j'aimerais que ce document soit partagé par mon service et d'autres departements.
Bref, avec l'enregistreur de macro, je ne suis pas convaincu que cela soit adapté (méconnaissance d'excel, et impossibilité de choisir l'imprimante)

Il n'y a peut etre pas de solution.
Mis à part, redefinir mes tableaux .. :(

Amicalement,
jb
 

Épaf

XLDnaute Occasionnel
Re : Question: mode paysage et portrait

J'ai fait ça par macro. La solution consiste à définir les plages de cellules constituant l'une et l'autre feuille et à fixer successivement les plages d'impression. Mais le code s'applique à deux plages situées l'une sous l'autre, séparées par une ou plusieurs lignes vides
Est-ce le cas et as-tu la possibilité de placer un bouton dans une barre d'outils ou dans la feuille pour exécuter la macro ?
@+

PS - Le bouton peut être créé par macro à l'ouverture du fichier et supprimé à la fermeture.
 
Dernière édition:

jbdubreuil

XLDnaute Occasionnel
Re : Question: mode paysage et portrait

Bonjour le Forum, Epaf,

Désolé pour reponse tardive.
Je ne pouvais plus me connecter sur Internet depuis vendredi.
Je suis evidemment partant pour ta solution macro, en sachant que ton code repond parfaitement à mon cas présent.

Ensuite suivant le feedback des personnes utilisatrices du fichier, ils decideront de la méthode.

Merci en tous les cas,

A+

jb
 

Épaf

XLDnaute Occasionnel
Re : Question: mode paysage et portrait

Bonjour jbdubreuil,
Voilà donc.
J'ai placé un PrintPreview en fin de mise en page afin que tu puisse la vérifier.
Printout est en remarque, pour éditer les pages, tu valides.
Le code définit successivement les 2 zones d'impression où que se trouvent ces zones dans la feuille de calculs.
S'il n'y a qu'une zone (pas de ligne ou de colonne vide entre les deux) imprime la feuille sur une seule page.
Exécuter la macro "impressionSurDeuxPages" (!)
Code:
Sub impressionSurDeuxPages()
Dim fl1 As Worksheet
Dim PremiereLigne, PremiereColonne, DerniereLigne1
Dim PremiereLigne2, DerniereLigne2
Dim Plage, SautDePage
    Set fl1 = Worksheets("Feuil1") 'FL1 => instance de la feuille de calculs
    
    fl1.PageSetup.PrintArea = "" 'on supprime l'ancienne zone d'impression
    
    'Adresses du premier tableau
    PremiereLigne = fl1.UsedRange.Row
    PremiereColonne = fl1.UsedRange.Column
    
    'Plage du premier tableau
    Plage = fl1.Range(Cells(PremiereLigne, PremiereColonne).Address).CurrentRegion.Address
    'Avec split on obtient un tableau à deux dimensions 0 et 1, contenant l'adresse
    '... de la première et de la dernière cellule de la plage
    DerniereLigne1 = fl1.Range(Split(Plage, ":")(1)).Row 'on récupère la dernière ligne
    
    'Lancer la macro d'édition du premier tableau
    MiseEnPage fl1, Plage, 1
    
    'Recherche de la dernière ligne renseignée de la feuille de calculs
    DerniereLigne2 = fl1.Cells(65536, PremiereColonne).End(xlUp).Row
    
    'Le second tableau existe-t-il :
    PremiereLigne2 = fl1.Cells(DerniereLigne1, PremiereColonne).End(xlDown).Row
    'Il n'existe pas si PremiereLigne2 = 65536 ou si = DerniereLigne1
    If DerniereLigne2 <> 65536 And DerniereLigne2 > DerniereLigne1 Then
    
        'un second tableau existe, on en établit la plage
        Plage = fl1.Range(Cells(PremiereLigne2, PremiereColonne).Address).CurrentRegion.Address
        
        'Lancer la macro d'édition du second tableau
        MiseEnPage fl1, Plage, 2
    End If
    Set fl1 = Nothing

End Sub

Sub MiseEnPage(fl1, Plage, Dispo)
    fl1.PageSetup.PrintArea = Plage
    'On centre le tableau dans le page
    With ActiveSheet.PageSetup
        .Orientation = Dispo 'xlLandscape ou xlPortrait
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .CenterHorizontally = True
        .CenterVertically = True
    End With
    ActiveWindow.SelectedSheets.PrintPreview [COLOR="Red"]'Juste pour tester[/COLOR]
    'ActiveSheet.PrintOut
End Sub
"En principe", pas d'adaptation à faire (!?!)
Bonne journée
@+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 859
Messages
2 092 879
Membres
105 548
dernier inscrit
bestitou