Affichage de l’aperçu avant impression de la page actuelle (Microsoft Excel)
Michelle a une longue feuille de travail avec laquelle elle travaille. Lorsqu’elle utilise l’aperçu avant impression pour la feuille de calcul, la page affichée dans la boîte de dialogue Aperçu avant impression est toujours la première page. Michelle se demande s’il existe un moyen de faire en sorte que l’aperçu avant impression affiche automatiquement la page de la feuille de calcul sur laquelle elle travaille.
Une façon d’aborder ce problème consiste à essayer de travailler avec des zones d’impression. Si vous sélectionnez la zone de la feuille de calcul sur laquelle vous travaillez, puis définissez la zone d’impression égale à votre sélection, lorsque vous affichez l’aperçu avant impression, vous ne devriez voir que cette zone d’impression.
Si cela ne répond pas à votre désir, vous pourriez penser que vous pouvez recourir à une macro. Voici un exemple de macro qui peut faire l’affaire pour vous:
Sub PrintPreviewActivePage() Dim lActiveRow As Long Dim iActiveCol As Integer Dim iHPBs As Integer Dim iVPBs As Integer Dim lRow As Integer Dim iCol As Integer Dim iPage As Integer lActiveRow = ActiveCell.Row iActiveCol = ActiveCell.Column ActiveSheet.UsedRange If IsEmpty(ActiveCell.SpecialCells(xlCellTypeLastCell)) Then _ ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " If lActiveRow > ActiveCell.SpecialCells(xlCellTypeLastCell).Row Or _ iActiveCol > ActiveCell.SpecialCells(xlCellTypeLastCell).Column Then _ Exit Sub With ActiveSheet iHPBs = .HPageBreaks.Count iVPBs = .VPageBreaks.Count lRow = 0 iCol = 0 If iHPBs > 0 Or iVPBs > 0 Then For lRow = iHPBs To 1 Step -1 If .HPageBreaks(lRow).Location.Row <= lActiveRow Then Exit For Next lRow For iCol = iVPBs To 1 Step -1 If .VPageBreaks(iCol).Location.Column <= iActiveCol Then Exit For Next iCol End If iPage = (lRow + 1) + (iCol * (iHPBs + 1)) .PrintOut From:=iPage, To:=iPage, Preview:=True MsgBox "Previewed page " & iPage End With If ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " Then _ Selection.SpecialCells(xlCellTypeLastCell).ClearContents End Sub
Cette macro est en fait une variante de n’importe quel nombre de macros que vous pourriez trouver avec des recherches sur Internet. Il se compose de deux éléments clés: d’abord la macro détermine la «page» sur laquelle vous vous trouvez dans la feuille de calcul, puis elle utilise la méthode .PrintOut avec le paramètre Preview défini sur True, ce qui entraîne l’appel de l’aperçu avant impression.
Dans certaines feuilles de calcul, cette macro peut fonctionner très bien, mais il est assez inconstant de savoir si cela fonctionnera ou non. Dans la plupart de mes tests, je n’ai pas pu le faire fonctionner, à moins d’utiliser de très petites feuilles de calcul. (En d’autres termes, très peu de lignes et de colonnes.) Si vous l’exécutez sur une grande feuille de calcul, vous verrez rapidement que vous obtenez une erreur «Indice hors limites» dans la boucle qui examine les membres de la collection .HPageBreaks. Comment cela peut-il se produire lorsque vous n’utilisez pas un membre hors de portée (lRow ne varie jamais en dehors de la valeur renvoyée par la propriété .Count) est déconcertant.
Cela semble cependant être un problème que Microsoft reconnaît. En fait, c’est un problème qu’ils ont reconnu, mais jamais résolu, depuis des années:
https://support.microsoft.com/en-us/help/210663/
Cependant, la solution suggérée sur la page Web ne fonctionne pas vraiment. Nous sommes donc bloqués avec une macro qui ne fonctionne de manière fiable que sur des feuilles de calcul où vous n’auriez pas besoin de calculer le numéro de page car vous ne travaillez qu’avec une seule page. Aargh!
L’essentiel est qu’une approche macro-basée peut – dans un avenir prévisible – ne pas être viable pour les besoins de Michelle. Cela nous laisse avec juste l’approche de la zone d’impression, décrite au début de cette astuce.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13578) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.