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 :

Adapter macro 2007/2010 pour mise en page [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 353
    Points
    34 353
    Par défaut Adapter macro 2007/2010 pour mise en page
    Bonjour à tous,

    je travaille pour un client qui évolue sur Excel 2003, et comme il refuse que je fasse des tests sur son poste, je n'ai pas beaucoup de solutions possibles :/
    Aussi, est-ce que quelqu'un parmi vous pourrait me donner l'équivalent du macro recorder sous Excel 2003 de la manipulation suivante :
    -Définir la zone d'impression A1:J200
    - ligne d'en-tête à garder 1:11
    - format portrait
    - 1 page max en largeur
    - automatique en hauteur

    Le code que j'ai actuellement sous 2007 mais qui ne passe pas sous la version 2003 du client :

    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
    Application.PrintCommunication = False
            With wbk.Sheets(Boucle).PageSetup
                .PrintArea = wbk.Sheets(Boucle).Range("A1:J" & wbk.Sheets(Boucle).Range("A65536").End(xlUp).Row).Address
                .PrintTitleRows = "$1:$11"
                .LeftHeader = ""
                .CenterHeader = ""
                .RightHeader = ""
                .LeftFooter = ""
                .CenterFooter = ""
                .RightFooter = "&10&P/&N"
                .LeftMargin = Application.InchesToPoints(0.25)
                .RightMargin = Application.InchesToPoints(0.25)
                .TopMargin = Application.InchesToPoints(0.75)
                .BottomMargin = Application.InchesToPoints(0.75)
                .HeaderMargin = Application.InchesToPoints(0.3)
                .FooterMargin = Application.InchesToPoints(0.3)
                .PrintHeadings = False
                .PrintGridlines = False
                .PrintComments = xlPrintNoComments
                '.PrintQuality = 600
                .CenterHorizontally = False
                .CenterVertically = False
                .orientation = xlPortrait
                .Draft = False
                .PaperSize = xlPaperA4
                .FirstPageNumber = xlAutomatic
                .Order = xlDownThenOver
                .BlackAndWhite = False
                .Zoom = False
                .FitToPagesWide = 1
                .FitToPagesTall = 0 'automatique
                .PrintErrors = xlPrintErrorsDisplayed
            End With
    Application.PrintCommunication = True
    Avec une erreur 438, erreur non gérée...

    Merci par avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    J'ai testé le code sous 2003 qui n'aime pas certaines instructions signalées par '///
    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
    Sub aa()
    Dim wbk As Workbook
    Dim Boucle
    Set wbk = ThisWorkbook
    Boucle = Sheets(1).Name
    'Application.PrintCommunication = False '///2003 ne connaît pas cette propriété
            With wbk.Sheets(Boucle).PageSetup
                .PrintArea = wbk.Sheets(Boucle).Range("A1:J" & wbk.Sheets(Boucle).Range("A65536").End(xlUp).Row).Address
                .PrintTitleRows = "$1:$11"
                .LeftHeader = ""
                .CenterHeader = ""
                .RightHeader = ""
                .LeftFooter = ""
                .CenterFooter = ""
                .RightFooter = "&10&P/&N"
                .LeftMargin = Application.InchesToPoints(0.25)
                .RightMargin = Application.InchesToPoints(0.25)
                .TopMargin = Application.InchesToPoints(0.75)
                .BottomMargin = Application.InchesToPoints(0.75)
                .HeaderMargin = Application.InchesToPoints(0.3)
                .FooterMargin = Application.InchesToPoints(0.3)
                .PrintHeadings = False
                .PrintGridlines = False
                .PrintComments = xlPrintNoComments
                '.PrintQuality = 600
                .CenterHorizontally = False
                .CenterVertically = False
                .Orientation = xlPortrait
                .Draft = False
                .PaperSize = xlPaperA4
                .FirstPageNumber = xlAutomatic
                .Order = xlDownThenOver
                .BlackAndWhite = False
                .Zoom = False
                .FitToPagesWide = 1
                .FitToPagesTall = 1 'automatique  ///n'aime pas le 0
                .PrintErrors = xlPrintErrorsDisplayed
            End With
    'Application.PrintCommunication = True  '///2003 ne connaît pas cette propriété
    End Sub
    FitToPagesTall, propriété
    Cette propriété renvoie ou définit le nombre de hauteurs de page en fonction duquel la feuille de calcul doit être mise à l'échelle lors de son impression. Cette propriété s'applique uniquement aux feuilles de calcul. Type de données Variant en lecture-écriture.

    Notes
    Si cette propriété a la valeur False, Microsoft Excel met la feuille de calcul à l'échelle en fonction de la valeur de la propriété FitToPagesWide.

    Si la propriété Zoom a la valeur True, la propriété FitToPagesTall est ignorée.

    Exemple
    Cet exemple montre comment configurer Microsoft Excel de sorte qu'il imprime la feuille Sheet1 exactement sur une page en hauteur et en largeur.

    With Worksheets("Sheet1").PageSetup
    .Zoom = False
    .FitToPagesTall = 1
    .FitToPagesWide = 1
    End With

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 353
    Points
    34 353
    Par défaut
    Super,

    peux-tu me dire si la valeur du nombre de feuille en hauteur est bien automatique en mettant 1 en 2003 stp ?

    Je ferais un test de la version pour mettre 0 ou 1 du coup.

    Merci !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    peux-tu me dire si la valeur du nombre de feuille en hauteur est bien automatique en mettant 1 en 2003 stp ?
    Non, rien d'automatique.
    C'est le nombre de feuilles à la verticale. Si on met 1 on a une seule feuille, si on met 3 on a 3 feuilles à la verticale.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 353
    Points
    34 353
    Par défaut
    Arg,

    donc condamné à faire un calcul en fonction du nombre de ligne :'(

    En fait dans ma version 2010, en mettant automatique tout est bien (sauts de pages et tout), alors que si je mets en dur le nombre de feuilles, ca me décale tout

    Merci en tous cas pour ton aide, je vais faire remonter le problème à mon client...

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

Discussions similaires

  1. [XL-2003] Macro pour mise en page, affichant le nombre total de pages du classeur entier
    Par BtjpsspgrW dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/10/2014, 10h38
  2. Macro pour mise en page formulaire
    Par chahnou dans le forum VBA Access
    Réponses: 9
    Dernier message: 13/12/2013, 21h18
  3. [XL-2010] Macro pour mise en page
    Par Nessie37 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 25/09/2012, 12h14
  4. macro pour mise en page d'un tableau
    Par teen6517 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/09/2010, 15h52

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