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].