Monsieur Excel
Pour tout savoir faire sur Excel !

12 juillet 2013

Bug dans la mise en page (a)

Dans notre dernier article, nous avons décrit un bug qui survient quand on enregistre une macro dans laquelle on crée une validation par liste en utilisant plusieurs noms séparés par des « ; ».

Aujourd’hui, nous nous intéressons à un autre bug dans l’enregistrement de macro, concernant cette fois-ci la définition d’un pied de page. Nous enregistrons une macro dans laquelle nous mettons en bas de page le jour et l’heure à gauche, et le chemin et le nom du fichier à droite.

Nous voyons ci-dessous la reproduction du pied de page, tout d’abord tel que nous l’avons défini lors de l’enregistrement de la macro, puis tel qu’il est obtenu quand il est défini par la macro enregistrée.


Voici le texte de la macro enregistrée qui, encore une fois, se révèle particulièrement verbeux, avec 53 lignes là où 2 lignes suffiraient :

Sub Pied_page()
'
' Pied_page Macro
'
    Application.CutCopyMode = False 
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = "" 
    End With 
    Application.PrintCommunication = True 
    ActiveSheet.PageSetup.PrintArea = "" 
    Application.PrintCommunication = False 
    With ActiveSheet.PageSetup 
        .LeftHeader = "" 
        .CenterHeader = "" 
        .RightHeader = "" 
        .LeftFooter = "&D&T" 
        .CenterFooter = "" 
        .RightFooter = "&Z&F" 
        .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 = xlPrintNoComments 
        .CenterHorizontally = False 
        .CenterVertically = False 
        .Orientation = xlPortrait 
        .Draft = False 
        .PaperSize = xlPaperA4 
        .FirstPageNumber = xlAutomatic 
        .Order = xlDownThenOver 
        .BlackAndWhite = False 
        .Zoom = 100 
        .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
End Sub

Le drame, c’est que la macro – quand on l’exécute – nous donne un bas de page totalement différent de notre objectif, comme on peut le voir dans la seconde image ci-dessus, avec une partie droite vide et une partie gauche comprenant un code qu’Excel lui-même est incapable d’interpréter.

Remarque – Ce bug est apparu avec la version 2010 d’Excel. S’il demeure avec la version 2013, merci de bien vouloir m’en informer.

Dans le prochain article, nous vous montrerons comment résoudre ce problème.

4 Commentaire(s):

  • Bonjour,

    Je viens de tester l'enregistrement / lecture de la macro sous Excel 2013 (64bits), sans aucune modification, et tout s'est bien déroulé.

    Bonne journée

    Grégoire

    By Anonymous Grégoire, sur 11:43 AM  

  • Même version et même constat que Grégoire ci-dessus.

    J'ajouterais que je ne sais pas si ça vient de ma façon de procéder lors de l'enregistrement de ladite macro, mais elle est deux fois plus longue que prévu.

    En effet, elle contient deux fois la même chose, à ceci près que la première moitié ne comporte que des "" comme valeurs de remplissage des champs d'en-tête et pied de page, alors que la deuxième moitié comporte les bonnes valeurs (des "" pour les champs devant rester vides, et les codes de champs désirés pour les autres champs d'en-te^tes et pied de page).

    By Anonymous Marcel32, sur 1:42 PM  

  • Merci pour ces deux contributions.

    Voyez l'article suivant. Est-ce que la même commande est toujours présente ?

    SI c'est le cas, le bug apparu avec elle en Excel 2010 a peut-être été résolu au passage...

    By Blogger Hervé Thiriez, sur 4:54 PM  

  • Bonjour,

    La macro enregistrée sous Excel 2013 était exactement la même que celle que vous présentiez.

    Bonne journée.

    By Anonymous Grégoire, sur 9:04 AM  

Enregistrer un commentaire

<< Accueil