[vba] utiliser le numéro de page d'une feuille

c@mou

XLDnaute Nouveau
[Résolu] [vba] utiliser le numéro de page d'une feuille

Salut tout le monde !

J'ai un gros soucis sur vba.

J'utilise un fichier de plusieurs feuilles sont certaines qui peuvent avoir plus d'une page. Et je voudrais obtenir une numérotation de page claire comme :

-feuille 1 page 1 = page 1
- feuille 1 page 2 = page 2
-feuille 2 page 1 = page 3
-feuille 3 page 1 = page 4
-Feuille 3 page 2 = page 5

etc...

J'ai cherché à additionner "&P" du pied de page avec une variable "numeropage" qui a été préalablement incrémentée en fonction du nombre de pages précédentes mais quand je cherche à convertir "&P" avec Cint, ca refuse catégoriquement.

J'ai fait un code du style :

Code:
Sheets(num_onglet).PageSetup.Centerfooter = "Page " & numeropage + CInt("&P") & " sur " & nombrepages

J'ai de plus essayé avec la methode
Code:
ActiveWorkbook.Sheets.HPageBreaks.Count + 1
Mais le problème est que la valeur renvoyée est fixe pour un onglet, donc sur le pied de page de deux pages d'un même onglet j'aurai le même numéro de page...

Merci de m'aider car là je suis perdu, d'habitude je m'en sors toujours avec les topics déjà existant sur ce forum... snif :(

edit : l'erreur est une incompatibilité de type...

C@mou
 
Dernière édition:

PMO2

XLDnaute Accro
Re : [vba] utiliser le numéro de page d'une feuille

Bonjour,

Une piste avec le code suivant à copier dans un module standard.
Il vous faudra adapter la ligne
Exclu = Array("Exposé", "Pas d'impression")
avec le nom des éventuelles feuilles non candidates à l'impression.

Code:
Sub PrintGroupNumPages()
Dim Exclu
Dim S As Object 'on déclare Object pour prendre en compte WorkSheet et Graph
Dim i&
Dim cpt%
Dim bool As Boolean
Dim T()
'### A adapter (liste des feuilles à ne pas imprimer) ###
Exclu = Array("Exposé", "Pas d'impression")
'########################################################
For Each S In ActiveWorkbook.Sheets
  bool = False
  For i& = LBound(Exclu) To UBound(Exclu)
    If S.Name = Exclu(i&) Then
      bool = True
      Exit For
    End If
  Next i&
  If Not bool Then
    cpt% = cpt% + 1
    ReDim Preserve T(1 To cpt%)
    T(cpt%) = S.Name
    S.PageSetup.CenterFooter = "Page " & "&P" & "/" & "&N"
  End If
Next S
Sheets(T).Select
ActiveWindow.SelectedSheets.PrintPreview
End Sub

Cordialement.

PMO
Patrick Morange
 

c@mou

XLDnaute Nouveau
Re : [vba] utiliser le numéro de page d'une feuille

Il semble que cela ne fonctionne pas.
Mon tableau Exclu est vide car je veux imprimer toutes les pages de toutes les feuilles. Par conséquent "bool" ne m'est pas utile. J'ai donc enlevé ces lignes de code. Il me reste :

Code:
Sub PrintGroupNumPages()
Dim S As Object 'on déclare Object pour prendre en compte WorkSheet et Graph
Dim i&
Dim cpt%
Dim T()

For Each S In ActiveWorkbook.Sheets

    cpt% = cpt% + 1
    ReDim Preserve T(1 To cpt%)
    T(cpt%) = S.Name
    S.PageSetup.CenterFooter = "Page " & "&P" & "/" & "&N"

Next S

End Sub

Mais cela numérote les pages de mes feuilles en revenant à la la numérotation 1 en changeant de feuille. J'ai donc :

feuille1 page 1 = page 1/2
feuille 1 page 2 = page 2/2
feuille 2 page 1 = page 1/2
feuille 2 page 2 = page 2/2
feuille 3 page 1 = page 1/...

Or je souhaite que la numérotation ne revienne pas à 1 d'une feuille à l'autre.

Si je comprends bien, le code que vous m'avez donné fait juste le tri des feuilles à ne pas imprimer et numérote celles qui sont candidates à l'impression. Or je voudrais imprimer toutes les feuilles. Peut-être que je n'ai pas été très clair. Désolé.
 

PMO2

XLDnaute Accro
Re : [vba] utiliser le numéro de page d'une feuille

Bonjour,

Vous pouvez reprendre le code d'origine et le laisser en l'état et notamment la ligne de code
Code:
Exclu = Array("Exposé", "Pas d'impression")
Si ces feuilles n'existent pas dans votre classeur elles ne seront pas traitées.

D'autre part la ligne de code
Code:
Sheets(T).Select
est essentielle pour le fonctionnement. Si vous faites une prévisualisation vous pourrez vérifier si vous obtenez la numérotation désirée.

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Réponses
10
Affichages
325

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon