IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer le nombre total de sauts de page


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Par défaut Récupérer le nombre total de sauts de page
    Bonjour,

    je besoin dans une macro de connaître le nombre total de sauts de page (HPageBreak) contenus dans mon ActiveSheet.
    Le problème est que HPageBreaks.Count me retourne 1 alors que la page compte 5 sauts de pages.

    Quelqun saurait comment je pourrais récupérer cette information ?

    J'ai remarqué que dans certains cas (je n'ai pas su les identifier), le nombre retourné par cette fonction s'incrémentait à chaque appel.
    Par exemple, dans une boucle du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    n = o
    while n < HPageBreaks.count
    ...
    wend

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai retrouvé ça, si ça peut t'aider... Je ne savais même pas que j'avais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub CompterPagesImprimables()
    Dim HFull As Integer, VFull As Integer, Total As Integer
    'Nombre de pages imprimable dans la feuille active
     
        Set tbl = ActiveSheet.Range("A1").CurrentRegion
        Plage = tbl.Address
        'DernièreLigne = tbl.Rows.Count
        'DernièreColonne = tbl.Columns.Count
        MsgBox Plage
        ActiveSheet.PageSetup.PrintArea = maplage
        Set tbl = Nothing
     
        'ou plus simplement
        ActiveSheet.PageSetup.PrintArea = Range("A1").CurrentRegion.Address
        For Each PB In ActiveSheet.VPageBreaks
            If PB.Extent = xlPageBreakFull Then
                VFull = VFull + 1
            Else
                VPartial = VPartial + 1
            End If
        Next
        'Comme on ne compte que les sauts de pages
        VPartial = VPartial + 1
        MsgBox VFull & " sauts de page plein écran, " & VPartial & _
        " sauts de page de la zone d'impression"
     
        For Each PB In ActiveSheet.HPageBreaks
            If PB.Extent = xlPageBreakFull Then
                HFull = HFull + 1
            Else
                HPartial = HPartial + 1
            End If
        Next
        'Comme on ne compte que les sauts de pages
        HPartial = HPartial + 1
        MsgBox HFull & " sauts de page plein écran, " & HPartial & _
        " sauts de page de la zone d'impression"
        MsgBox "Nombre de pages total : " & (VPartial * HPartial)
        'Relecture (*)
        With ActiveSheet.PageSetup
            MsgBox "Nb pages horizontales " & .FitToPagesWide 'Marche pas (*)
            MsgBox "Nb pages verticales " & .FitToPagesTall 'Marche pas (*)
        End With
     
        With ActiveSheet.PageSetup
                .PaperSize = xlPaperA4
                .Zoom = 100
                .FitToPagesWide = HPartial
                .FitToPagesTall = VPartial
        End With
        Set tbl = Nothing
     
        'Obtenir le nombre de page total selon SilkyRoad
        MsgBox "Nombre de page total : " & ExecuteExcel4Macro("GET.DOCUMENT(50)")
    End Sub
    'La première Colonne des pages de gauche et la première ligne des pages du haut est 1
    'Les autres commencent à PageBreak + 1
    'C'est pourquoi la première ligne = 0 (AdV(0) = 0)...
    '... et la première colonne = 0 (AdH(0) = 0) afin de pouvoir ajouter 1 à toutes...
    '... les premières lignes et première colonnes des pages de la zone d'impression
    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Par défaut
    Merci pour ta réactivité, mais ton code ne semble pas fonctionner correctement avec mon document. Il ne trouve de 2 pages, or il y en a 5...
    Je commence à me demander si le problème ne viendrait pas de mon document ?...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    As-tu défini la zone d'impression avant de compter le nombre de pages ?

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Lorsque la propriété Application, Count, Creator, Item ou Parent, ou encore la méthode Add est utilisée avec la propriété HPageBreaks :

    Pour une zone d'impression automatique, la propriété HPageBreaks s'applique uniquement aux sauts de page de la zone d'impression.
    Pour une zone d'impression personnalisée de la même plage, la propriété HPageBreaks s'applique à tous les sauts de page.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Par défaut
    J'ai lu ce passage dans la doc, mais ça ne m'a pas plus avancé...
    Qu'est-ce qu'une zone d'impression personalisée ? faut-il en définir une ?

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.PageSetup.PrintArea = "$A$1:$C$300" '
    MsgBox ActiveSheet.HPageBreaks.Count

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Par défaut
    Rien n'y fait...
    J'ai écrit le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Dim pageOriginale As Worksheet
        Set pageOriginale = ActiveSheet
     
     
        MsgBox ("nb Ligne = " & pageOriginale.UsedRange.Rows.Count)
     
        pageOriginale.PageSetup.PrintArea = "$A$1:$AI$" & pageOriginale.UsedRange.Rows.Count
     
        MsgBox ("nbBreaks = " & pageOriginale.HPageBreaks.Count)
    Il me retourne toujours 1...

    Quelqun peut essayer chez lui et me dire s'il observe le même comportement ?

    Merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre le nombre total de pages
    Par thor44 dans le forum Reports
    Réponses: 3
    Dernier message: 17/09/2008, 11h59
  2. [PDF] Comment récupérer le nombre de page ?
    Par Chikh001 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/04/2008, 17h03
  3. Recuper le nombre total de page d un etat
    Par Stargate SG1 dans le forum IHM
    Réponses: 6
    Dernier message: 27/02/2008, 22h48
  4. [XSL-FO]Récupérer le nombre total de pages d'un doc
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/05/2007, 16h16
  5. Nombre total de page
    Par Redsky dans le forum QuickReport
    Réponses: 4
    Dernier message: 03/07/2005, 23h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo