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 :

Mise en page par VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 882
    Par défaut Mise en page par VBA
    Bonjour,

    Je tourne en rond depuis plusieurs heures et je ne m'explique pas pourquoi je n'arrive pas à modifier la mise en page d'une feuille Excel en VBA

    J'ai enregistré une macro et cela donne cela :

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub Macro5()
    '
    ' Macro5 Macro
    '
     
    '
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .PrintTitleRows = ""
            .PrintTitleColumns = ""
        End With
        Application.PrintCommunication = True
        ActiveSheet.PageSetup.PrintArea = "$A$1:$G$43"
        Application.PrintCommunication = False
        With ActiveSheet.PageSetup
            .LeftHeader = ""
            .CenterHeader = "Agenda de clôture 2018" & Chr(10) & ""
            .RightHeader = "&D"
            .LeftFooter = ""
            .CenterFooter = ""
            .RightFooter = ""
            .LeftMargin = Application.InchesToPoints(0.708661417322835)
            .RightMargin = Application.InchesToPoints(0.708661417322835)
            .TopMargin = Application.InchesToPoints(0.748031496062992)
            .BottomMargin = Application.InchesToPoints(0.748031496062992)
            .HeaderMargin = Application.InchesToPoints(0.31496062992126)
            .FooterMargin = Application.InchesToPoints(0.31496062992126)
            .PrintHeadings = False
            .PrintGridlines = False
            .PrintComments = xlPrintSheetEnd
            .PrintQuality = 600
            .CenterHorizontally = True
            .CenterVertically = False
            .Orientation = xlLandscape
            .Draft = False
            .PaperSize = xlPaperA4
            .FirstPageNumber = xlAutomatic
            .Order = xlDownThenOver
            .BlackAndWhite = False
            .Zoom = False
            .FitToPagesWide = 1
            .FitToPagesTall = 1
            .PrintErrors = xlPrintErrorsDisplayed
            .OddAndEvenPagesHeaderFooter = False
            .DifferentFirstPageHeaderFooter = False
            .ScaleWithDocHeaderFooter = True
            .AlignMarginsHeaderFooter = True
            .EvenPage.LeftHeader.Text = ""
            .EvenPage.CenterHeader.Text = ""
            .EvenPage.RightHeader.Text = ""
            .EvenPage.LeftFooter.Text = ""
            .EvenPage.CenterFooter.Text = ""
            .EvenPage.RightFooter.Text = ""
            .FirstPage.LeftHeader.Text = ""
            .FirstPage.CenterHeader.Text = ""
            .FirstPage.RightHeader.Text = ""
            .FirstPage.LeftFooter.Text = ""
            .FirstPage.CenterFooter.Text = ""
            .FirstPage.RightFooter.Text = ""
        End With
        Application.PrintCommunication = True
        Range("F16").Select
    End
    Si ensuite je modifie dans le document "Agenda de clôture 2018" en "Agenda de clôture 2019" et que j'exécute la macro le document reste avec le titre "Agenda de clôture 2018".

    Je ne comprends pas pourquoi cela ne fonctionne pas. In fine, je voulais passer l'année en paramètre mais comme cela ne fonctionnait pas, j'ai enregistré la macro pour voir où j'avais pu faire une erreur. Même en en touchant rien à la macro enregistrée, cela ne marche pas!

    Merci pour votre aidde

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Daejung Voir le message
    Si ensuite je modifie dans le document "Agenda de clôture 2018" en "Agenda de clôture 2019" et que j'exécute la macro le document reste avec le titre "Agenda de clôture 2018".
    C'est normal puisque tu as mis ce titre "en dur" dans l'entête, sans lien avec le nom du fichier.
    Et comme c'est aussi en dur dans le code, lancer la macro sur le fichier ne changera rien.

    Essaye ça :

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 882
    Par défaut
    Citation Envoyé par Menhir Voir le message
    C'est normal puisque tu as mis ce titre "en dur" dans l'entête, sans lien avec le nom du fichier.
    Et comme c'est aussi en dur dans le code, lancer la macro sur le fichier ne changera rien.

    Essaye ça :
    "Agenda de clôture 2018" en dur pour faire un test.
    Je lance la macro et cela devrait mettre comme titre "Agenda de clôture 2018"

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    "Agenda de clôture 2018" en dur pour faire un test.
    Je lance la macro et cela devrait mettre comme titre "Agenda de clôture 2018"
    Je ne vois pas l'intérêt de coder une procédure ainsi.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    Il y a un soucis avec Application.PrintCommunication, voir ici : https://social.technet.microsoft.com...ng?forum=excel
    Je ne suis pas totalement convaincu par les méthodes de contournement mais ça te donne un axe de recherche.
    eric

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Mon 1er point c'était de savoir pourquoi exécuter la macro enregistrée sans y toucher, ne donne pas le résultat escompté.
    Encore une fois, pour mieux la cerner, je te conseille de purger la procédure.
    Sur les versions récentes d'Excel, CTRL + P (Impression) suffit à contrôler la mise en page, celle-ci apparaissant par défaut.

    Quel résultat attends-tu, inscrit dans la procédure, et qui n'apparaît pas?

    Autre point.
    La propriété
    PrintCommunication
    de l'objet Application n'a besoin dde se modifier qu'en début et fin de la procédure de mise en page.
    Voir l'espace documentaire Microsoft à ce sujet.

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Daejung, Bonjour au Forum,

    je voulais passer l'année en paramètre mais comme cela ne fonctionnait pas
    Pourquoi? Par quelle procédure? Eventuellement par quelle erreur sur quelle ligne de code?
    Pour ta compréhension, tu aurais mieux fait de reporter ces éléments.

    Tu peux lier le titre du document par une valeur de cellule, ou par une fonction date.

    Enfin, je te conseille de purger le code en y affectant les seules propriétés modifiées lors de la mise en page.
    Reporter les propriétés standard ne sert qu'à alourdir le code, et, partant, le rendre moins lisible.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 882
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Bonjour Daejung, Bonjour au Forum,



    Pourquoi? Par quelle procédure? Eventuellement par quelle erreur sur quelle ligne de code?
    Pour ta compréhension, tu aurais mieux fait de reporter ces éléments.

    Tu peux lier le titre du document par une valeur de cellule, ou par une fonction date.

    Enfin, je te conseille de purger le code en y affectant les seules propriétés modifiées lors de la mise en page.
    Reporter les propriétés standard ne sert qu'à alourdir le code, et, partant, le rendre moins lisible.
    Mon 1er point c'était de savoir pourquoi exécuter la macro enregistrée sans y toucher, ne donne pas le résultat escompté.
    La suite est secondaire pour l'instant.

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Daejung Voir le message
    "Agenda de clôture 2018" en dur pour faire un test.
    Je lance la macro et cela devrait mettre comme titre "Agenda de clôture 2018"
    Ta macro change l'entête d'impression de la feuille active et non pas un "titre" (encore faudrait-il savoir ce que ce terme signifie pour toi).

    Citation Envoyé par Daejung Voir le message
    Mon 1er point c'était de savoir pourquoi exécuter la macro enregistrée sans y toucher, ne donne pas le résultat escompté.
    Déjà, c'est une erreur d'utiliser un code obtenu par l'enregistreur automatique sans chercher à le comprendre parce qu'il est très rare qu'il ne soit pas nécessaire de l'adapter à ce qu'on veut faire.
    Ensuite, il faudrait que tu expliques quel est le "résultat escompté".

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 882
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Ta macro change l'entête d'impression de la feuille active et non pas un "titre" (encore faudrait-il savoir ce que ce terme signifie pour toi).


    Déjà, c'est une erreur d'utiliser un code obtenu par l'enregistreur automatique sans chercher à le comprendre parce qu'il est très rare qu'il ne soit pas nécessaire de l'adapter à ce qu'on veut faire.
    Ensuite, il faudrait que tu expliques quel est le "résultat escompté".
    Merci de me faire la leçon. je suis complètement débile il est vrai.

    Je comprends le code, j'ai simplement utilisé l'enregistreur car j'avais une erreur que je m'expliquais pas.
    Je vais me débrouiller autrement

    Cas résolu

  11. #11
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Je souscris à 100% sur ce qu'Expose Menhir.
    Aussi, Daejung, ce ont ce genre de remarques qui te feraient acquérir la rigueur et l'expérience nécessaire. Non?

    Excuse-moi, j'évoque le cas que je connais le mieux, le-mien.
    Si, voilà bientôt 10 ans, j'avais fait preuve de susceptibilité, alors je ne serais pas en train de coder des modules de classe!

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

Discussions similaires

  1. [XL-2010] Mise en page par VBA
    Par Opal_m dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/06/2017, 12h43
  2. mise en page par WYSWYG ou coder à la main?
    Par sarah_insat dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 28/04/2010, 13h52
  3. probème de conception de mise en page par CSS
    Par carreau dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/08/2009, 01h02
  4. Mise en page par DIV
    Par santaflam dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/04/2009, 17h37
  5. Mise en page par DIV
    Par Clorish dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 15/06/2007, 11h31

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