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 :

Saut de page sans ligne orpheline


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut Saut de page sans ligne orpheline
    Bonjour à toutes et à tous,

    j'essaye de gérer au mieux l'impression d'une feuille Excel avec des sauts de pages...
    Cependant, le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.HPageBreaks.Add Before:=Cells(L, 1)
    je n'arrive pas à empêcher les lignes orphelines...

    En faite, j'aimerais préciser un bloc insécable... par exemple,
    - de la ligne 13 à la ligne 27, le bloc ne doit pas être coupé sinon saut de ligne en 13
    - de la ligne 114 à la ligne 157, le bloc ne doit pas être coupé sinon saut de ligne en 114

    Quelqu'un s'aurait-il faire cela ?
    Merci d'avance !

    @+

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Salut,

    je te propose un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If ws.HPageBreaks.count <> 0 Then
     
            For pb = 1 To ws.HPageBreaks.count
                PB_old = ws.HPageBreaks(pb).Location.Row
                If PB_old <=27 And PB_old >13 Then
                    PB_new = 13
                    Set ws.HPageBreaks(pb).Location = Cells(PB_new, 1)
                Elseif PB_old <=157 And PB_old >114 Then
                    PB_new = 114
                    Set ws.HPageBreaks(pb).Location = Cells(PB_new, 1)
                End If
            Next pb
     
    End If
    Je n'ai pas testé mais j'ai repris un code que j'avais déjà écrit pour moi. C'est juste une idée.
    A+

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Là aussi un truc qui date chez moi, principe légèrement différent, je n’avais pas de blocs précis, mais les blocs étaient caractérisés par le fait qu’ils ne comportaient pas de ligne vierges (case colonne B au mini remplie).
    Si le saut de page ne tombait pas sur une ligne vierge, l’incrémentation négative de K revient à détecter la première cellule recherchée vierge au dessus et à y insérer un saut de page…..

    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
    Sub Impress()
    Dim Hop As Range 'emplacement des sauts de page auto
    Dim I As Integer
    Dim J As Integer
    Dim K As Integer
     
    Sheets(2).Activate
    ActiveWindow.View = xlPageBreakPreview ' Il est impératif que ce mode soit activé pour le contrôle des sauts
    I = Sheets(2).HPageBreaks.Count
    For J = 1 To I
        K = 0
        'Localise les sauts de pages auto, si ne se situe pas à une ligne vierge, K se décale et insère un forcé
        ' au bon endroit.
        'dans cette feuille :colonne A vierge, si données la case de la colonne B est forcément remplie.
        Set Hop = Sheets(2).HPageBreaks(J).Location.Offset(0, 1)
        While Hop.Offset(-K, 0) <> ""
            K = K + 1
        Wend
        Sheets(2).HPageBreaks.Add Before:=Hop.Offset(-K, 0) ' ajout
    Next J
    ActiveWindow.View = xlNormalView 'rétablit le mode normal
    Worksheets(2).PageSetup.LeftHeader = Range("xx")
    End Sub
    cordialement,

    Didier

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

Discussions similaires

  1. Saut de page sans page-break
    Par Sebastien14 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 12/06/2008, 09h33
  2. Saut de page sans CSS2
    Par Momodedf dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 30/08/2007, 14h37
  3. [itext] Paragraph sans saut de page
    Par phoebe dans le forum Documents
    Réponses: 2
    Dernier message: 04/04/2007, 11h58
  4. Impimer en continu sans saut de page
    Par alexandria dans le forum Langage
    Réponses: 1
    Dernier message: 04/02/2006, 03h41
  5. [XSLT][FO] Saut de pages VS saut de lignes
    Par alainme dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 19/09/2005, 11h32

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