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 :

Identification saut de page sous VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Identification saut de page sous VBA
    Voici mon probleme:
    Je souhaiterai automatiser l'impression d'un document sur une feuille A4 sachant que ce doc, pour des soucis de lisibilté, est qualibré sur 2 pages.
    (Je ne peux le limiter à une page sinon celui-ci serait illisible)

    Une fois qualibré, je copie la partie contenue sur la page 2 pour la coller à coté de la partie sur la page 1.

    Le soucis etant d'automatiser une pratique qui à la base est tirée par les cheveux...

    J'ai donc tenté de créer une macro, j'ai un soucis quand je dois selectionner la partie sur la page 2, la difficulté étant de d'identifier cette partie.

    Voici le code associé que j'ai commencé à produire (Je suis débutant) en mixant enregistrement et parties de forum:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Application.PrintCommunication = True
        ActiveWindow.View = xlPageLayoutView
     
        Dim N As Long
        Dim Wksht As Worksheet, Cellule As Range
        Dim VPC As Long
     
        VPC = Wksht.VPageBreaks.Count + 1
        N = Range("A1").End(xlDown).Row
        ActiveWindow.SmallScroll Down:=N
     
        Range("VPC:N").Select
        Selection.Copy
    Le message d'erreur survient à " VPC = Wksht.VPageBreaks.Count + 1": Erreur d'execution 91, Variable objet ou variable de bloc With non definie.

    Merci pour votre aide.

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Lorsque tu déclares WkSheet, cette variable est par défaut = Nothing.

    Il faut y placer un objet avant de pouvoir l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set WKSheet = Thisworkbook.Worksheets("NomFeuille")
    Cordialement,

    PGZ

  3. #3
    Membre averti Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Points : 324
    Points
    324
    Par défaut
    Bonsoir,

    Ne serait il pas plus simple de demander à Excel d'ajuster le tout sur une seule page...
    Il faut voir les propriétés FitToPagesWide et FitToPagesTall de pagesetup

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Justement sur une seule page le format est trop petit, c'est illisible.

    PGZ j'ai tenté d'insérer ton code, j'ai un message d'exécution 9, "l'indice n'appartient pas à la selection".

    So now?

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour

    Citation Envoyé par mathieubonnefontiae Voir le message
    PGZ j'ai tenté d'insérer ton code, j'ai un message d'exécution 9, "l'indice n'appartient pas à la selection".
    Tu dois remplacer "NomFeuille" pas le nom de la feuille.

    PGZ

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut rep
    Je l'ai fait my dear, voici le code pour la selection de la plage apres kle 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
     Application.PrintCommunication = True
        ActiveWindow.View = xlPageLayoutView
     
        Dim N As Long
        Dim Wksht As Worksheet, Cellule As Range
        Dim VPC As Long
     
        Set Wksht = ThisWorkbook.Worksheets("Feuill1")
     
        VPC = Wksht.VPageBreaks.Count + 1
        N = Range("A1").End(xlDown).Row
        ActiveWindow.SmallScroll Down:=N
     
        Range("VPC:N").Select

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu!!!
    bonjour

    une idée toute simple

    pourquoi ne pas compter le nombre de lignes

    les diviser par 2

    et paramétrer le aera

    exemple

    ta page est remplie disons jusqu'à la ligne 70 ce qui est trop grand pour une page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim DerniereLignepage2 As Long, dernierelignepage1 As Long
    DerniereLignepage2 = Range("A" & Rows.Count).End(xlUp).Row 'on touve la derniere ligne de la page
    dernierelignepage1 = Round(DerniereLignepage2 / 2) 'round au cas ou on aurais pas un nombre paire
    'il te reste a déterminer la derniere colonne utilisée exemple la colonne "j"
        ActiveSheet.PageSetup.PrintArea = "$A$1:$j$" & dernierelignepage1
        Active Sheets.PrintOut
        ActiveSheet.PageSetup.PrintArea = "$A$" & dernierelignepage1 + 1 & ":$j$" & DerniereLignepage2
        Active Sheets.PrintOut
     
        End Sub
    c'est un premier jet on peut l'améliorer


    au plaisir

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    tu as recu ma reponse?

    Voici ce que j'ai composé à l'aide de technique que j'ai quelque peu adapté:
    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
      Dim DerLig As Long, DerCol As Integer
        Dim Derligpage1 As Long
        Dim Rg As Range
        Dim PageSetup As Variant
        Dim DerliereLignepage2 As Double
     
        With ActiveSheet.PageSetup
            .FitToPagesTall = 2
            .FitToPagesWide = 1
        End With
     
        With Worksheets("Feuil1")
     
            DerLig = .Cells.Find(What:="*", _
                     LookIn:=xlValues, _
                    SearchOrder:=xlByRows, _
                SearchDirection:=xlPrevious).Row
     
            DerCol = .Cells.Find(What:="*", _
                     LookIn:=xlValues, _
                    SearchOrder:=xlByColumns, _
                SearchDirection:=xlPrevious).Column
     
            Derligpage1 = Round(DerniereLignepage2 / 2)
        End With
     
        Range("$A$" & Derligpage1 + 1 & ":$B$" & DerLig).Select
        Selection.Copy
    Avec ce code je ne copie pas la partie située sur la page 2 mais l'essentiel du doc soit la page 1 et 2.

    Je ne vois pas ou est l'erreur, je crois que ta methode n'est pas reconnu par VB meme si je n'ai aucun message d'erreur.

    T'en penses quoi?

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir

    essaie ca:

    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
     
    Sub Macro2()
    Dim DerniereLignepage2 As Long, dernierelignepage1 As Long'pour trouver la derniere ligne utilisé dans la colonne A tu fait ceci:
    DerniereLignepage2 = Range("A1").SpecialCells(xlCellTypeLastCell).Row 'on touve la derniere ligne de la page
    'tu divise la precedente par 2 donc tu aura la moitié
    dernierelignepage1 = Round(DerniereLignepage2 / 2) 'round au cas ou on aurais pas un nombre paire
    Application.ScreenUpdating = False
     
        ActiveWindow.View = xlPageBreakPreview
        ActiveWindow.SmallScroll Down:=18
        Set ActiveSheet.HPageBreaks(1).Location = Range("A" & dernierelignepage1)
        Set ActiveSheet.HPageBreaks(1).Location = Range("A" & dernierelignepage1 + 1)
        ActiveWindow.View = xlNormalView
     
     
        ActiveSheet.PrintPreview
     
    End Sub

    au plaisir

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Re
    Super ca marche, tres ingenieux cette solution, encore merci Patrick.

    Bien à toi

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour


    ya pas de quoi tu peut sans doute l'améliorer


    au plaisir

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

Discussions similaires

  1. [Toutes versions] comment coder en vba des sauts de page sous word
    Par xixeme dans le forum VBA Word
    Réponses: 1
    Dernier message: 28/03/2009, 00h35
  2. Saut de Page/Sous Rapports
    Par Karim93210 dans le forum iReport
    Réponses: 3
    Dernier message: 27/06/2007, 23h08
  3. Saut de ligne sous VBA
    Par lg022 dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/02/2007, 11h05
  4. [VBA-W]simuler un saut de page en vba
    Par Mut dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/01/2007, 15h05
  5. Problème de saut de page Sous Rapport
    Par ramoucho17 dans le forum iReport
    Réponses: 4
    Dernier message: 21/09/2006, 09h06

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