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 :

Insertion de saut de page VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Asset Manager
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Asset Manager
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut Insertion de saut de page VBA
    Bonjour à tous,

    Je fais appel à vous car je rencontre un problème étrange.
    Objectif : je cherche à insérer un saut de page au niveau d'un chapitre dont le titre est fixe mais dont l'emplacement sur ma feuille excel est variable. Ce chapitre s'appelle IV. ELEMENTS EXCEPTIONNELS

    J'ai donc tenté le code suivant, qui mouline, qui ne renvoie aucun message d'erreur mais qui ne fonctionne pas. Il est 12h36, j'y suis depuis 9h04 et je suis a bout.

    Je vous remercie BEAUCOUP

    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
    Sub impression()
    Dim plage1 As Range
    Dim extrem As Range
    Dim break As Range
    Dim i, n As Integer
     
    'Définit les plages :
    '   extrem et le coin en bas à droite de la zone d'impression
    '   plage1 est la zone d'impression
    '   break est la ligne ou faire le HPageBreak
     
    Set extrem = ActiveSheet.Cells.Find("VII. EXPERTISE").Offset(15, 17)
    Set plage1 = Range(Cells(1, 1), extrem)
    Set break = ActiveSheet.Cells.Find("IV. ELEMENTS EXCEPTIONNELS")
     
    'Définit la zone d'impression + mise en page
    ActiveSheet.PageSetup.PrintArea = plage1
        With ActiveSheet.PageSetup
            .Orientation = xlLandscape
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 2
            .PrintErrors = xlPrintErrorsDisplayed
        End With
     
    'ESSAIE d'insérer un saut de page sans succès.
    ActiveSheet.ResetAllPageBreaks
    ActiveSheet.HPageBreaks.Add Before:=break
     
    End Sub

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ligne = ActiveSheet.Cells.Find("VII. EXPERTISE").Offset(15, 17).row
    colon = ActiveSheet.Cells.Find("VII. EXPERTISE").Offset(15, 17).column
    Set plage1 = activesheet.Range(Cells(1, 1), cells(ligne,colon))
    Tu vois l'esprit. Reproduit pour ton break et devrait gazer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PageSetup.PrintArea = plage1.address
    Printarea veut pas de ton range, il veut un string.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Asset Manager
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Asset Manager
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    Salut EngueEngue,

    Merci de ta réponse rapide.

    J'ai modifié le code comme tu me l'as indiqué mais ca ne fonctionne pas. Je m'explique : le printarea fonctionne correctement mais c'est toujours le HPageBreaks qui veut pas.

    J'ai l'impression qu'il ignore cette ligne, l'emplacement du HPageBreaks APRES avoir fait tourner la macro est le même que le HPageBreaks par défaut.

    Tu as une idée ?

    Encore merci du temps que tu m'accordes !

    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
    Sub impression()
    Dim plage1 As Range
    Dim extrem As Range
    Dim break As Range
    Dim i, n As Integer
     
    'Définit les plages :
    '   plage1 est la zone d'impression
    '   break est la ligne ou faire le HPageBreak
     
     
     
    ligne = ActiveSheet.Cells.Find("VII. EXPERTISE").Offset(15, 17).Row
    colon = ActiveSheet.Cells.Find("VII. EXPERTISE").Offset(15, 17).Column
    Set plage1 = ActiveSheet.Range(Cells(1, 1), Cells(ligne, colon))
     
    ligne2 = ActiveSheet.Cells.Find("IV. ELEMENTS EXCEPTIONNELS").Row
    colon2 = ActiveSheet.Cells.Find("IV. ELEMENTS EXCEPTIONNELS").Column
    Set break = ActiveSheet.Cells(ligne2, colon2)
     
    'Définit la zone d'impression + mise en page
    ActiveSheet.PageSetup.PrintArea = plage1.Address
        With ActiveSheet.PageSetup
            .Orientation = xlLandscape
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 2
            .PrintErrors = xlPrintErrorsDisplayed
        End With
     
    'ESSAIE d'insérer un saut de page sans succès.
    ActiveSheet.ResetAllPageBreaks
    ActiveSheet.HPageBreaks.Add Before:=break
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    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 609
    Par défaut
    Bonjour,

    Et si tu essayais ainsi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.HPageBreaks.Add Before:=Range("A" & ligne2)

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    .adress

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Asset Manager
    Inscrit en
    Octobre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Asset Manager
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2013
    Messages : 3
    Par défaut
    Merci à tous les deux.

    Bon aucun ne fonctionne. Je n'arrive pas à comprendre

    Du coup j'ai fait le gros porc et ca marche mais je suis un peu déçu de n'avoir pas su faire mieux... :

    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
    Sub impression()
    Dim plage1 As Range
    Dim extrem As Range
    Dim break As Range
    Dim i, n As Integer
     
    'Définit les plages :
    '   plage1 est la zone d'impression
    '   break est la ligne ou faire le HPageBreak
     
     
     
    ligne = ActiveSheet.Cells.Find("V. ACTIONS A MENER").Offset(15, 17).Row
    colon = ActiveSheet.Cells.Find("V. ACTIONS A MENER").Offset(15, 17).Column
    Set plage1 = ActiveSheet.Range(Cells(1, 1), Cells(ligne, colon))
     
    ligne2 = ActiveSheet.Cells.Find("IV. ELEMENTS EXCEPTIONNELS").Row
    colon2 = ActiveSheet.Cells.Find("IV. ELEMENTS EXCEPTIONNELS").Column
    Set break = ActiveSheet.Cells(ligne2, colon2)
     
    'Définit la zone d'impression + mise en page
    ActiveSheet.PageSetup.PrintArea = plage1.Address
        With ActiveSheet.PageSetup
            .Orientation = xlLandscape
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 2
            .PrintErrors = xlPrintErrorsDisplayed
        End With
     
     
        ActiveWindow.View = xlPageBreakPreview
        ActiveSheet.ResetAllPageBreaks
        Set ActiveSheet.HPageBreaks(1).Location = break
        ActiveWindow.View = xlNormalView
     
    End Sub

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

Discussions similaires

  1. Insertion/imposition Saut de page dans un état
    Par kedmard dans le forum IHM
    Réponses: 6
    Dernier message: 10/02/2012, 10h40
  2. saut de page vba access
    Par binouzzz19 dans le forum IHM
    Réponses: 4
    Dernier message: 21/05/2007, 13h46
  3. Saut de page et bouton VBA
    Par louroulou dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2006, 14h30
  4. VBA : Insertion d'un saut de page dans WORD
    Par Actarus69 dans le forum VBA Word
    Réponses: 1
    Dernier message: 25/04/2006, 13h05
  5. [VBA] Saut de page...
    Par _Maniak dans le forum Général VBA
    Réponses: 5
    Dernier message: 24/09/2004, 15h26

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