OVH Cloud OVH Cloud

Fonction PageNumber()?

3 réponses
Avatar
Christophe LE GUILLOU
Bonjour,

Je souhaite afficher dans une cellule le numéro de la page qui contient la
cellule.
Il s'agirait donc d'un équivalent au champ numéro de page que l'on peut
trouver dans les sections "En-tête" et "Pieds de page", mais que je pourrais
inclure dans une cellule de mon document.
J'ai parcouru les fonctions intégrées d'EXCEL mais je n'ai rien trouvé.

Quelqu'un aurait t'il une solution?

Cordialement,

3 réponses

Avatar
ru-th
Salut

un petit tour ici
http://perso.wanadoo.fr/frederic.sigonneau/code/Impr/NumeroPageCellule.txt
a+
rural thierry

"Christophe LE GUILLOU" a
écrit dans le message de
news:
Bonjour,

Je souhaite afficher dans une cellule le numéro de la page qui contient la
cellule.
Il s'agirait donc d'un équivalent au champ numéro de page que l'on peut
trouver dans les sections "En-tête" et "Pieds de page", mais que je
pourrais

inclure dans une cellule de mon document.
J'ai parcouru les fonctions intégrées d'EXCEL mais je n'ai rien trouvé.

Quelqu'un aurait t'il une solution?

Cordialement,



Avatar
Christophe LE GUILLOU
Merci pour votre réponse Thierry!

J'avais déjà vu ce code qui répond en partie à mon besoin.

Ce code fonctionne parfaitement si on passe comme paramètres de la fonction
les coordonnées de la cellule, par exemple =NumeroPage(A1:A1).
Ce n'est pas efficace dans mon cas car si j'insère 100 lignes au dessus de
la cellule, la formule sera déclaée sur une autre page mais elle renverra
toujours le numéro de page de la cellule A1:A1.

Pour répondre à mon besoin, il faudrait que la fonction NumeroPage() évalue
elle même les coordonnées de la cellule qui la contient.

Est ce possible?
Avatar
Ange Ounis
Je te propose d'ajouter une ligne à la fonction de Laurent Longre :

''''''''''''''''
Function NumeroPage(Cellule As Range) As Integer
'L Longre, mpfe

Dim VPC As Integer, HPC As Integer
Dim VPB As VPageBreak, HPB As HPageBreak
Dim Wksht As Worksheet
Dim Col As Integer, Ligne As Long

Application.Volatile ' <-- ici

Set Wksht = Cellule.Worksheet
Ligne = Cellule.Row
Col = Cellule.Column
If Wksht.PageSetup.Order = xlDownThenOver Then
HPC = Wksht.HPageBreaks.Count + 1
VPC = 1
Else
VPC = Wksht.VPageBreaks.Count + 1
HPC = 1
End If
NumeroPage = 1
For Each VPB In Wksht.VPageBreaks
If VPB.Location.Column > Col Then Exit For
NumeroPage = NumeroPage + HPC
Next VPB
For Each HPB In Wksht.HPageBreaks
If HPB.Location.Row > Ligne Then Exit For
NumeroPage = NumeroPage + VPC
Next HPB

End Function
'''''''''''''''''

Ça devrait fonctionner comme tu le souhaites.

----------
Ange Ounis
----------

Merci pour votre réponse Thierry!

J'avais déjà vu ce code qui répond en partie à mon besoin.

Ce code fonctionne parfaitement si on passe comme paramètres de la fonction
les coordonnées de la cellule, par exemple =NumeroPage(A1:A1).
Ce n'est pas efficace dans mon cas car si j'insère 100 lignes au dessus de
la cellule, la formule sera déclaée sur une autre page mais elle renverra
toujours le numéro de page de la cellule A1:A1.

Pour répondre à mon besoin, il faudrait que la fonction NumeroPage() évalue
elle même les coordonnées de la cellule qui la contient.

Est ce possible?