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
'
' 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
.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
.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 = ""
.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.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 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 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 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 Grégoire, sur 9:04 AM
Enregistrer un commentaire
<< Accueil