Impression

xavier62000 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   -  
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Je dois imprimer les pages 1 à 3 en Paysage et 5 à 7 en Portrait. 

Est il possible dans Excel comme dans Word de dire à partir de ce point imprimer en Portrait.

Sinon en VBA je suis preneur.

Merci à vous 


Windows / Edge 142.0.0.0

 

16 réponses

Nain_Porte_Quoi Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   10
 

hello,

vite fait

Sub Impression_Mixte()

    With ActiveSheet.PageSetup
        .Orientation = xlLandscape        ' Pages 1 à 3 en paysage
    End With
    ActiveSheet.PrintOut From:=1, To:=3

    With ActiveSheet.PageSetup
        .Orientation = xlPortrait        ' Pages 5 à 7 en portrait
    End With
    ActiveSheet.PrintOut From:=5, To:=7

End Sub
1
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

Plus simple, sans vue perso :

Sub Impression1()
  Dim Adr1, Adr2
  With ActiveSheet
    .PageSetup.Orientation = xlLandscape
    Set Adr1 = .HPageBreaks(3).Location
    Range("A1", Adr1.Offset(-1)).PrintPreview
    rep = MsgBox("Impression ?", vbYesNo)
    If rep = 6 Then
      Range("A1", Adr1.Offset(-1)).PrintOut
    Else
      Exit Sub
    End If
    Range("A10000").Select
    Set Adr2 = .HPageBreaks(7).Location
    .PageSetup.Orientation = xlPortrait
    Range(Adr1, Adr2.Offset(-1)).PrintPreview
    rep = MsgBox("Impression ?", vbYesNo)
    If rep = 6 Then
      Range(Adr1, Adr2.Offset(-1)).PrintOut
    End If
  End With
End Sub

1
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

Bonjour,

Dans Word, tu fais des sauts de section. Tu peux configurer chaque section en mode portrait ou paysage (onglet Mise en Page, Orientation).

Daniel


0
xavier62000 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   2
 

Merci à vous, 

je vais prendre la réponse en VBA, cela me servira pour la suite. 

C'est possible de faire un aperçu impression au lieu d'imprimer directement. 

Je présume que Oui!

Merci d'avance

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nain_Porte_Quoi Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   10
 

Oui, mais non :-) 

Comme ce sont 2 impressions l'une à la suite de l'autre on ne peut pas avoir les 2 ensembles.

A la rigueur l'une après l'autre, à vérifier. 

0
xavier62000 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   2
 

OK. Cela ne m'arrange pas vraiment.

J'ai repris ma  mise en forme pour tout mettre en paysage. L'aperçu fonctionne, mais en appuyant sur page suivante, je reste sur la 1ère page. En revanche, toutes les pages sont imprimées. 

Peut etre qu'il manque un rafraichissement ??

Merci 

 'Aperçu impression
    Application.PrintCommunication = True
    Range(" A2:Q232").Select
    ActiveSheet.PageSetup.PrintArea = "$A$2:$Q$232"
    ActiveWindow.SelectedSheets.PrintPreview
0
Nain_Porte_Quoi Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   10
 

C'est quoi ce code ? 

Application.PrintCommunication = True n'est pas nécessaire

Range(" A2:Q232").Select n'est pas nécessaire non plus

ActiveSheet.PageSetup.PrintArea = "$A$2:$Q$232"
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.PrintPreview

Ca ça suffit

et dans l'aperçu ça fonctionne très bien chez moi, vous pouvez utilisez l'ascenseur , la touche "flèche vers le bas" ou la touche "Page suivante" pour voir les autres pages

0
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

Bonjour,

Pour corriger un bug Microsoft :

Sub Impression()
  Dim Adr1, Adr2
  With ActiveSheet
    .PageSetup.Orientation = xlLandscape
    Set Adr1 = .HPageBreaks(3).Location
    Range("A1", Adr1.Offset(-1)).Select
    ActiveWorkbook.CustomViews.Add ViewName:="vue1", PrintSettings:=True, _
      RowColSettings:=True
    ActiveWorkbook.CustomViews("vue1").Show
    Selection.PrintPreview
    rep = MsgBox("Impression ?", vbYesNo)
    If rep = 6 Then
      Selection.PrintOut From:=1, To:=3
    Else
      Exit Sub
    End If
    Range("A10000").Select
    Set Adr2 = .HPageBreaks(7).Location
    Range(Adr1, Adr2.Offset(-1)).Select
    .PageSetup.Orientation = xlPortrait
    ActiveWorkbook.CustomViews.Add ViewName:="vue2", PrintSettings:=True, _
      RowColSettings:=True
    ActiveWorkbook.CustomViews("vue2").Show
    Selection.PrintPreview
    rep = MsgBox("Impression ?", vbYesNo)
    If rep = 6 Then
      Selection.PrintOut
    End If
  End With
End Sub

Daniel


0
Nain_Porte_Quoi Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   10
 

Bonjour danielc0.

de quel bug parlez vous ?

Si je ne m'abuse, votre code utilise les sauts de pages manuels, ça plante s'il n'y en a pas.

Question supplémentaire : pourquoi des select (fixe qui plus est) ?

Merci pour les infos

0
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

Bonjour,

Non, ça fonctionne bien avec des sauts automatiques (cf. fichier joint).

Le bug MS : erreur 9 l'indice n'appartient pas à la sélection si la cellule active n'est pas au dessous du saut de page. D'où le :

Range("A10000").Select

Voir :

https://support.microsoft.com/fr-fr/topic/le-message-d-erreur-indice-hors-plage-s-affiche-lorsque-vous-utilisez-hpagebreaks-ou-vpagebreaks-location-dans-excel-ec4a8e22-9b58-349d-b160-f7a4f561c809

Fichier de test :

https://1fichier.com/?so0nrc90vbz32b1zhodn

Daniel

0
Nain_Porte_Quoi Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   10
 

OK, merci

0
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

J'ai oublié :

"pourquoi des select (fixe qui plus est) ?"

Outre celui du bug, les vues personnalisées (customviews) sont créées à partir des cellules sélectionnées. Pas moyen de faire autrement.

Daniel


0
xavier62000 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   2
 

Bonjour Daniel,

Avec le fichier ce serait peut être plus parlant. La feuille de classeur concernée est "Affichage' en appuyant sur "Maj" sur la ligne 1.

L'impression se fait en Paysage de la page 1 à 5 et au delà en portait. Mais à ce jour ce n'est pas encore calibré 

Chez moi, les aperçus ne fonctionnent pas bien, ni fleche vers le bas, page suivante, ascenseur, ça reste bloqué sur la page 1.

Merci par avance

https://cijoint.org/r/eHJpdSxF#+qnCcvXuI9UegeZryi24pzjoEMvRqIFrGFSFGgkAo8Q=

0
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

Bonjour à tous,

Comme te l'as demandé Nain_Porte_Quoi, quelle est ta version d'Excel ?

Daniel

0
Nain_Porte_Quoi Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   10
 

En repartant de mon code et en l'appliquant précisément à votre fichier, voici la macro que je vous propose

Sub Aperçu_Immpression_Mixte()

    With ActiveSheet
        .PageSetup.PrintArea = "$A$2:$Q$145"
        .PageSetup.Orientation = xlLandscape
        .PrintPreview
        
        rep = MsgBox("Impression paysage ?", vbYesNoCancel)
        If rep = vbYes Then
            .PrintOut
        ElseIf rep = vbCancel Then
            Exit Sub
        End If
        
        .PageSetup.PrintArea = "$A$148:$M$279"
        .PageSetup.Orientation = xlPortrait
        .PrintPreview
        
        rep = MsgBox("Impression protrait ?", vbYesNo)
        If rep = 6 Then
            .PrintOut
        End If
        
    End With

End Sub

Éventuellement vous devrez adapter les zones d'impressions

Lors du premier aperçu le bouton "Annuler" fait sortir de l'impression.

Voici l'aperçu avant impression chez moi

Au fait vous n'avez pas précisé sur quelle version d'Excel vous travaillez

0
xavier62000 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   2
 

Bonjour à Vous

Ma version d'excel est office 365

Microsoft® Excel® pour Microsoft 365 MSO (Version 2510 Build 16.0.19328.20190) 64 bits

0
xavier62000 Messages postés 79 Date d'inscription   Statut Membre Dernière intervention   2
 

Re,

Merci pour le code, cela me convient très bien.

Chez moi page suivante, précédente etc.. ne fonctionnent pas en mode paysage !! Je ne sais pas pourquoi. En revanche en mode portrait Oui. 

Vraiment bizaroid !!

Bon diamanche

0
danielc0 Messages postés 2000 Date d'inscription   Statut Membre Dernière intervention   246
 

La plage A2:Q32 est trop grande pour tenir sur une page. J'ai redimensionné les "pavés"pour avoir une impression correcte (du moins avec mon imprimante) :

https://1fichier.com/?jpmgnyo2udjv3mcdcvt6

Sub Impr()
  Dim Adr1 As Range, Adr2 As Range
  With Sheets("Affichage")
    .Activate
    .[A1].Select
    .PageSetup.Orientation = xlLandscape
    Set Adr1 = .HPageBreaks(4).Location
    .Range("Q2", Adr1.Offset(-1)).PrintPreview
    rep = MsgBox("Impression ?", vbYesNo)
    If rep = 6 Then
      .Range("Q1", Adr1.Offset(-1)).PrintOut
    Else
      Exit Sub
    End If
    .Range("A10000").Select
    .PageSetup.Orientation = xlPortrait
    Set Adr1 = Adr1.Offset(1)
    Set Adr2 = .HPageBreaks(6).Location
    With .Range(Adr1, Adr2.Offset(-1)).Resize(, 12)
      .PrintPreview
      rep = MsgBox("Impression ?", vbYesNo)
      If rep = 6 Then
        .PrintOut
      Else
        Exit Sub
      End If
    End With
    .Range("A1").Select
  End With
End Sub

Tu peux rajouter des données tant que les plages peuvent tenir sur une feuille.

Daniel


0