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 :

Copier la mise en page d'une feuille à l'autre ?


Sujet :

Macros et VBA Excel

  1. #1
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut Copier la mise en page d'une feuille à l'autre ?
    Bonjour à tous.

    Merci de votre temps et de votre aide.

    J'ai un classeur Excel qui comporte une douzaine de feuilles et je copie chacune des feuilles dans un nouveau classeur, donc une douzaine de classeurs au final.

    J'arrive sans problème à copier les données, leur formatage et celui de la feuille.

    Par contre impossible de copier la mise en page.

    J'ai fait rouler l'enregistreur de macro et j'en ai déduit le code mentionné plus bas.

    À ma grande surprise les propriétées founies par feuilleSource ne sont pas celle qu'elles utilisées si on demande l'impression. Exemple la propriété .PageSetup.PaperSize retourne 1 alors qu'elle devrait être xlPaper11x17 (soit 17).

    Où devrais-je prendre mes informations pour recopier la mise en page de la page d'origine dans la page de destination ?

    Ci dessous le code que j'utilise :

    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
    42
    43
    44
    45
    46
    47
                'mise en page
                With feuilleCible.PageSetup
                    .LeftHeader = feuilleSource.PageSetup.LeftHeader
                    .CenterHeader = feuilleSource.PageSetup.CenterHeader
                    .RightHeader = feuilleSource.PageSetup.RightHeader
                    .LeftFooter = feuilleSource.PageSetup.LeftFooter
                    .CenterFooter = feuilleSource.PageSetup.CenterFooter
                    .RightFooter = feuilleSource.PageSetup.RightFooter
                    .LeftMargin = feuilleSource.PageSetup.LeftMargin
                    .RightMargin = feuilleSource.PageSetup.RightMargin
                    .TopMargin = feuilleSource.PageSetup.TopMargin
                    .BottomMargin = feuilleSource.PageSetup.BottomMargin
                    .HeaderMargin = feuilleSource.PageSetup.HeaderMargin
                    .FooterMargin = feuilleSource.PageSetup.FooterMargin
                    .PrintHeadings = feuilleSource.PageSetup.PrintHeadings
                    .PrintGridlines = feuilleSource.PageSetup.PrintGridlines
                    .PrintComments = feuilleSource.PageSetup.PrintComments
                    .PrintQuality = feuilleSource.PageSetup.PrintQuality
                    .CenterHorizontally = feuilleSource.PageSetup.CenterHorizontally
                    .CenterVertically = feuilleSource.PageSetup.CenterVertically
                    .Orientation = feuilleSource.PageSetup.Orientation
                    .Draft = feuilleSource.PageSetup.Draft
                    .PaperSize = feuilleSource.PageSetup.PaperSize
                    .FirstPageNumber = feuilleSource.PageSetup.FirstPageNumber
                    .Order = feuilleSource.PageSetup.Order
                    .BlackAndWhite = feuilleSource.PageSetup.BlackAndWhite
                    .Zoom = feuilleSource.PageSetup.Zoom
                    .FitToPagesWide = feuilleSource.PageSetup.FitToPagesWide
                    .FitToPagesTall = feuilleSource.PageSetup.FitToPagesTall
                    .PrintErrors = feuilleSource.PageSetup.PrintErrors
                    .OddAndEvenPagesHeaderFooter = feuilleSource.PageSetup.OddAndEvenPagesHeaderFooter
                    .DifferentFirstPageHeaderFooter = feuilleSource.PageSetup.DifferentFirstPageHeaderFooter
                    .ScaleWithDocHeaderFooter = feuilleSource.PageSetup.ScaleWithDocHeaderFooter
                    .AlignMarginsHeaderFooter = feuilleSource.PageSetup.AlignMarginsHeaderFooter
                    .EvenPage.LeftHeader.Text = feuilleSource.PageSetup.EvenPage.LeftHeader.Text
                    .EvenPage.CenterHeader.Text = feuilleSource.PageSetup.EvenPage.CenterHeader.Text
                    .EvenPage.RightHeader.Text = feuilleSource.PageSetup.EvenPage.RightHeader.Text
                    .EvenPage.LeftFooter.Text = feuilleSource.PageSetup.EvenPage.LeftFooter.Text
                    .EvenPage.CenterFooter.Text = feuilleSource.PageSetup.EvenPage.CenterFooter.Text
                    .EvenPage.RightFooter.Text = feuilleSource.PageSetup.EvenPage.RightFooter.Text
                    .FirstPage.LeftHeader.Text = feuilleSource.PageSetup.FirstPage.LeftHeader.Text
                    .FirstPage.CenterHeader.Text = feuilleSource.PageSetup.FirstPage.CenterHeader.Text
                    .FirstPage.RightHeader.Text = feuilleSource.PageSetup.FirstPage.RightHeader.Text
                    .FirstPage.LeftFooter.Text = feuilleSource.PageSetup.FirstPage.LeftFooter.Text
                    .FirstPage.CenterFooter.Text = feuilleSource.PageSetup.FirstPage.CenterFooter.Text
                    .FirstPage.RightFooter.Text = feuilleSource.PageSetup.FirstPage.RightFooter.Text
                End With
    FeuilleSource est un pointeur sur la feuille d'origine dans le classeur d'origine.

    A+

  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.

    Cela ne va pas beaucoup t'aider, mais je n'ai aucune difficulté à lire la taille de page choisie pour l'impression d'une feuille.
    La valeur 1 correspond à xlPaperLetter (8,5" x 11") soit le demi-format de xlPaper11x17.

    Du coup, j'ai fait une manip VBA : copier une feuille dans un nouveau classeur. Sans copier la taille de page, j'ai déjà la même dans le nouveau classeur. Donc, juste en copiant la feuille je copie la taille de page à l'impression.

    Cordialement,

    PGZ

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    Du coup, j'ai fait une manip VBA : copier une feuille dans un nouveau classeur. Sans copier la taille de page, j'ai déjà la même dans le nouveau classeur. Donc, juste en copiant la feuille je copie la taille de page à l'impression.
    Y compris si tu change le format du papier pour 11 x 17 ?

    A+

  4. #4
    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 marot_r Voir le message
    Y compris si tu change le format du papier pour 11 x 17 ?
    Oui, exactement ! Cela m'a un peu surpris, mais bon ... J'ai fait l'essai sur une version 2007. Je peux regarder aussi sur 2010.

    Cdlt,

    PGZ

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 490
    Points : 16 393
    Points
    16 393
    Par défaut
    Bonjour

    Si tu dupliques l'onglet et non son contenu en principe la mise en page suit...

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 353
    Points : 23 819
    Points
    23 819
    Par défaut
    OK je vais creuser un peu plus du côté de ma copie.

    A+

Discussions similaires

  1. [XL-2010] Garder la mise en page d'une feuille excel lors de l'export vers MS Word
    Par StormH dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/07/2015, 13h32
  2. Réponses: 4
    Dernier message: 09/07/2015, 09h59
  3. [VBA-E] Mise en page d'une feuille
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 09h23
  4. Mise en page avec une feuille de style
    Par leroivert dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 15/11/2005, 11h39
  5. [MFC] mise en page d'une impression
    Par Alice9 dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2005, 09h34

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