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 :

Savoir sur quelle page va etre imprimer une ligne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut Savoir sur quelle page va etre imprimer une ligne
    Bonjour le forum,

    Je fais de nouveau appel à vous car j'aimerais savoir s'il existe une façon en VB, de déterminer sur quelle page va se trouver une ligne de ma feuille lors de l'impression.

    En fait pour un souci de mise en forme je souhaiterais que certaine ligne ne soit pas séparer par un saut de page donc si je pouvais savoir sur quelles pages ces lignes vont être imprimées je pourrais changer le saut de page pour gérer le problème.

    Merci d'avance à tous ceux qui prendront le temps de me répondre.
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Il te faudrait déterminer sur quelle ligne se situe les sauts de page versus celles que tu veux grouper.
    Le code qui suit te permettrait de savoir où sont les sauts de page actuels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim PageBr As Object
     
        For Each PageBr In ActiveSheet.HPageBreaks
            'MsgBox PageBr.Location.Row
            Debug.Print PageBr.Location.Row
       Next
    Tu peux alors forcer les sauts de pages aux endroits que tu préfères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.HPageBreaks.Add before:=Range("A" & LigneChoisie)
    Par contre, dès que tu forceras un saut de pages, les autres seront décalés.
    Tu pourrais lire les nouveaux sauts de pages en utilisant leur index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.HPageBreaks.Item(Numéro de l'index).Location.Row
    MPi²

  3. #3
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Merci beaucoup parmi,

    J'avais fini par m'orienter vers les HPageBreaksmais ces derniers étaient un peu flous pour moi.
    C'est maintenant plus clair, je vais pouvoir gérer mes sauts de pages avec les différents éléments que tu m'as apportés.

    Je t'en remercie
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  4. #4
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Voilà ce que j'ai pu sortir grâce à toi parmi

    Je récupère les premières lignes des pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function Lignes_Pages(sh As Worksheet) As Variant
        '-------------------------------------------------------------------------------+
        '   Construit un tableau qui contient le numéro des premières lignes des pages  |
        '-------------------------------------------------------------------------------+
            Dim resultat(), i&, nb_pages&
            nb_pages = sh.PageSetup.Pages.Count                 'nombre de pages de la feuille
            ReDim resultat(nb_pages)
            resultat(0) = 1                                     'page 1 commence toujours ligne 1
            For i = 1 To nb_pages - 1
                resultat(i) = sh.HPageBreaks(i).Location.Row
            Next i
            Lignes_Pages = resultat()
    End Function
    Je test si une ligne est la première d'une page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function Premiere_Ligne_Page(Ligne As Long) As Boolean
        '-----------------------------------------------------------------------+
        '   Renvoie Vrai si la ligne en paramètre est la première d'une page    |
        '-----------------------------------------------------------------------+
        Dim i&, t(): t() = Lignes_Pages(ActiveSheet)
        For i = 0 To UBound(t)
            If Ligne = t(i) Then
                Premiere_Ligne_Page = True
                Exit For
            End If
        Next i
    End Function
    Ensuite comme je veux mettre mes lignes par deux, si la deuxième est en début de page, j'ajoute un saut de page avant la précédente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Placer_HPB()
        '---------------------------------------------------+
        '   Place l'en-tête et son champ sur la même page   |
        '---------------------------------------------------+
        ActiveSheet.ResetAllPageBreaks
        Dim i&
        For i = 12 To 30 Step 3
            If Premiere_Ligne_Page(i) Then
                ActiveSheet.HPageBreaks.Add before:=Range("A" & i - 1)
            End If
        Next i
    End Sub
    Avec ça et en descendant le long des lignes je ne suis pas embêté avec les sauts de pages qui se décalent.

    Encore merci à toi et bonne journée
    Je passe en
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

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

Discussions similaires

  1. savoir sur quelle page on est et le rajouter
    Par Yepazix dans le forum Langage
    Réponses: 8
    Dernier message: 31/05/2013, 20h24
  2. Savoir sur quelle page on est
    Par Invité(e) dans le forum ASP
    Réponses: 2
    Dernier message: 30/05/2008, 21h55
  3. [CR 9] imprimer une ligne de détail sur nouvelle page
    Par rot@rot dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 05/05/2008, 09h26
  4. Imprimer une ligne et décaler la page
    Par fadex dans le forum Pascal
    Réponses: 6
    Dernier message: 12/09/2006, 10h46
  5. comment savoir par quelle page est passé un visiteur
    Par emilie_per dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2006, 11h11

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