Numéro de page

]Bonjour le forum,

Lorsque j’exécute la macro ci-dessous cela me donne le numéro de page de la cellule active, dans un MSGBOX.

Est-ce possible, plutôt qu’un MSGBOX, que cela me renvoie la valeur dans la cellule active.

Je vous joint le fichier pour un meilleur compréhension.

Merci de votre aide

Sub numeroPageCelluleActive()

Application.ScreenUpdating = False

ActiveWindow.View = xlPageBreakPreview

MsgBox numeroPage(ActiveCell)

ActiveWindow.View = xlNormalView

Application.ScreenUpdating = True

End Sub

Function numeroPage(Cellule As Range) As Integer

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

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

Bonjour,

Je ne comprends pas la question.

Peux tu reformuler la question et donner un exemple du résultat attendu ?

Cdlt

Bonjour Jean Eric,

lorsque je lance la macro, j'ai le resultat qui s'affiche dans un msgbox, moi je souhaiterai que le résultat s'affiche en colonne K.

exemple ; ligne 2 Je souhaiterai que le résultat de la macro soit inserer en K2

J'espère est plus compréhensible, merci de votre aide

Bonjour,

pour avoir le numéro de page dans la cellule active

remplace

MsgBox numeroPage(ActiveCell)

par

activecell=numeroPage(ActiveCell)

pour avoir le numéro de page en K2

remplace

MsgBox numeroPage(ActiveCell)

par

range("K2")=numeroPage(ActiveCell)

Merci beaucoup,

Pouvez m'aider encore un peu, je voudrai mettre un boucle pour continuer sur tout la colonne.

Sub numeroPageCelluleActive()

Application.ScreenUpdating = False

ActiveWindow.View = xlPageBreakPreview

For numeroPage = 1 to

Range("K2") = numeroPage(ActiveCell)

ActiveCell.Offset(1, 0).Select

next

ActiveWindow.View = xlNormalView

Application.ScreenUpdating = True

End Sub

Merci de votre aide

ca y est la bloucle fonction, mais sur 50 lignes et le probleme est que le nombre de ligne peut etre variable. (50 ou 75 ou 1500)

comment puisje faire, merci encore pour votre aide.

For i = 2 To 50

ActiveCell = numeroPage(ActiveCell)

ActiveCell.Offset(1, 0).Select

Next

Jano a écrit :

ca y est la bloucle fonction, mais sur 50 lignes et le probleme est que le nombre de ligne peut etre variable. (50 ou 75 ou 1500)

comment puis-je faire, merci encore pour votre aide.

dl=range("A" & rows.count).end(xlup).row

For i = 2 To dl

ActiveCell = numeroPage(ActiveCell)

ActiveCell.Offset(1, 0).Select

Next

merci beaucoup h2so4 , très bon après midi à tous

Bonsoir à tous,

Avec la macro cidessous tout fonctionne, mais vu que j'ai des fichiers avec beaucoup de lignes ( moyenne 3000) c'est extrement long . Deux heures pour 2086 lignes, ci joint le fichier.

Pourriez vous me dire ci cela vient du code ci dessous ;

Sub numeroPageCelluleActive()

Range("k2").Select

Application.ScreenUpdating = False

ActiveWindow.View = xlPageBreakPreview

dl = Range("J" & Rows.Count).End(xlUp).Row

For i = 2 To dl

ActiveCell = numeroPage(ActiveCell)

ActiveCell.Offset(1, 0).Select

Next

ActiveWindow.View = xlNormalView

Application.ScreenUpdating = True

End Sub

Function numeroPage(Cellule As Range) As Integer

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

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

Merci de votre aide

Bonsoir,

une optimisation qui se base sur le nombre de lignes (34) par page, plutôt que de refaire le calcul à chaque fois.

Sub newnumeroPage()

Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview

dl = Range("J" & Rows.Count).End(xlUp).Row
For i = 2 To dl

Cells(i, "K") = Int((i - 1) / 34) + 1

Next

ActiveWindow.View = xlNormalView
Application.ScreenUpdating = True

End Sub

Encore merci pour toute votre aide h2so4, mais j'ai une contraite supplémentaire. c'est que je n'ai pas toujours le meme nb de lignes par page. je pense que c'est fichu, je viens de laisser tournée la macro de 23h à 5h30 et toujours pas fini (sur un fichier de 3000 lignes) merci de votre et trés bonne journée à tous

Bonsoir à tous,

Je suis sincèrement navré de vous ennuyer avec ma macro, mais je suis au bout du rouleau.

J’ai passé beaucoup de temps avec vous pour que cela fonctionne et cela fonction, mais pas sur des fichiers très volumineux.(3000 lignes)

h2so4 m’a bien donné la solution, mais j’ai omis de stipuler que le nombre de lignes par page été variable.

Si vous n’avez pas de solution, je le clôturerai le fil et ferai mes gros fichiers à la mano.

Merci beaucoup

Rechercher des sujets similaires à "numero page"