Numéros de page dans VBA (Microsoft Excel)
Steve cherche un moyen de déterminer, dans une macro VBA, le nombre de pages qu’une feuille de calcul aura, une fois imprimée, et le numéro de page sur lequel une cellule particulière sera imprimée. Cette tâche n’est pas aussi simple qu’on pourrait l’espérer, mais elle peut être accomplie.
Il semble que la meilleure façon de gérer cela consiste à utiliser une fonction Excel 4 obsolète (mais toujours disponible) pour déterminer le nombre total de pages imprimées dans une feuille de calcul. Ensuite, vous pouvez utiliser les collections HPageBreaks et VPageBreaks pour déterminer où se situe la cellule dans la matrice des pages qui seront imprimées. Voici un exemple de macro qui utilise ces éléments:
Sub PageInfo() Dim iPages As Integer Dim iCol As Integer Dim iCols As Integer Dim lRows As Long Dim lRow As Long Dim x As Long Dim y As Long Dim iPage As Integer iPages = ExecuteExcel4Macro("Get.Document(50)") With ActiveSheet y = ActiveCell.Column iCols = .VPageBreaks.Count x = 0 Do x = x + 1 Loop Until x = iCols _ Or y < .VPageBreaks(x).Location.Column iCol = x If y >= .VPageBreaks(x).Location.Column Then iCol = iCol + 1 End If y = ActiveCell.Row lRows = .HPageBreaks.Count x = 0 Do x = x + 1 Loop Until x = lRows _ Or y < .HPageBreaks(x).Location.Row lRow = x If y >= .HPageBreaks(x).Location.Row Then lRow = lRow + 1 End If If .PageSetup.Order = xlDownThenOver Then iPage = (iCol - 1) (lRows + 1) + lRow Else iPage = (lRow - 1) (iCols + 1) + iCol End If End With MsgBox "Cell " & ActiveCell.Address & _ " is on " & vbCrLf & "Page " & _ iPage & " of " & iPages & " pages" End Sub
Une chose que vous devez garder à l’esprit avec cette macro est que les collections HPageBreaks et VPageBreaks ne sont considérées comme exactes que si vous affichez la feuille de calcul dans l’aperçu des sauts de page (Affichage | Aperçu des sauts de page). Ainsi, vous voudrez vous assurer que vous êtes dans ce mode avant de sélectionner une cellule et d’exécuter la macro.
_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 (11581) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.
Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici: link: / excel-Page_Numbers_in_VBA [Page Numbers in VBA]
.