Sub test_numpage()
Dim i As Integer, j As Integer, c As Range
'si la zone d'impression est vide on quitte la procédure
If ActiveSheet.PageSetup.PrintArea = "" Then Exit Sub
'en cas de sélection d'une cellule en dehors de la zone d'impression
Set c = Intersect(Range(ActiveCell.Address), Range(ActiveSheet.PageSetup.PrintArea))
If c Is Nothing Then
MsgBox "veuillez sélectionner une cellule dans la zone d'impression"
Exit Sub
End If
'comptage du nombre de sauts de page horizontaux jusqu'à la cellule active
For i = 1 To ActiveSheet.HPageBreaks.Count
If ActiveSheet.HPageBreaks(i).Location.Row > ActiveCell.Row Then Exit For
Next
'comptage du nombre de sauts de page verticaux jusqu'à la cellule active
For j = 1 To ActiveSheet.VPageBreaks.Count
If ActiveSheet.VPageBreaks(j).Location.Column > ActiveCell.Column Then Exit For
Next
'vérification de la mise en page
Select Case ActiveSheet.PageSetup.Order
Case Is = xlOverThenDown
i = (i - 1) * (ActiveSheet.VPageBreaks.Count + 1)
Case Is = xlDownThenOver
j = (j - 1) * (ActiveSheet.HPageBreaks.Count + 1)
End Select
'insertion du numéro de page dans la cellule active
ActiveCell = "p." & i + j & "/" & (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1)
End Sub