Impression
Résoludanielc0 Messages postés 2055 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
- Impression
- Spouleur d'impression - Guide
- Impression livret a5 - Guide
- Impression ecran samsung - Guide
- Problème impression pdf texte manquant - Forum PDF
- Impression miroir word - Guide
16 réponses
Le besoin est d’imprimer les pages 1 à 3 en paysage puis les pages 5 à 7 en portrait dans Excel, idéalement via une macro.
La solution la plus directe consiste en une macro qui règle l’orientation sur paysage, imprime le premier bloc, puis bascule en portrait et imprime le bloc suivant.
Des échanges soulignent des risques liés aux sauts de pages (manuels ou automatiques) et à l’indice hors plage lorsque la sélection n’est pas sous le saut, ce qui peut faire échouer le script.
Des conseils complémentaires recommandent d’ajuster les plages et de privilégier les sauts de page automatiques plutôt que les sélections fixes pour assurer la cohérence des blocs imprimés.
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionMerci à 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
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.
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
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
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
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
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 :
Fichier de test :
https://1fichier.com/?so0nrc90vbz32b1zhodn
Daniel
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
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=
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
Bonjour à Vous
Ma version d'excel est office 365
Microsoft® Excel® pour Microsoft 365 MSO (Version 2510 Build 16.0.19328.20190) 64 bits
