VBA PointsToMillimeters et largeur des colonnes
Bonjour à tous,
Pour mettre en page des documents, j'essaie de faire une fonction qui règle la largeur des colonnes.
je rencontre deux problèmes :
1. Quand je soustrait la taille des marges de la largeur du papier, le résultat n'est pas bon. La feuille est large de 21cm (A4 paysage), les marges gauches et droites de 1,4cm, le résultat (UsablePaperWidth) devrait être 18,2 mais la macro renvoie 18,1.
en remplaçant :
UsablePaperWidth = TotalPaperWidth - shPrint.PageSetup.LeftMargin / Application.CentimetersToPoints(1) - shPrint.PageSetup.RightMargin / Application.CentimetersToPoints(1)par :
UsablePaperWidth = TotalPaperWidth - shPrint.PageSetup.LeftMargin / Application.CentimetersToPoints(1)
UsablePaperWidth = UsablePaperWidth - shPrint.PageSetup.LeftMargin / Application.CentimetersToPoints(1)ça me renvoie le bon résultat. Je suppose que c'est du à un arrondi dans la conversion des points en cm, est ce que ça parle à quelqu'un ?
2. J'ai essayé de contourner le problème en utilisant application.MillimetersToPoints à la place de CentimetersToPoints, mais j'ai une runtime error 438, l'objet ne supporte pas la méthode, alors que CentimetersToPoints si. Google n'a que très peu de résultat avec ces mots clefs et je ne comprends pas ce qui pose problème.
voici le code, si quelqu'un à déjà rencontré ces problèmes ou a une piste, je suis très preneur!
merci d'avance
Sub PaperWidth()
Dim TotalPaperWidth As Double
Dim UsablePaperWidth As Double
If shPrint.PageSetup.PaperSize = xlPaperA4 Then
If shPrint.PageSetup.Orientation = 1 Then
TotalPaperWidth = 21
Else
TotalPaperWidth = 29.7
End If
Else
MsgBox "erreur format papier"
End If
UsablePaperWidth = TotalPaperWidth - shPrint.PageSetup.LeftMargin / Application.CentimetersToPoints(1) - shPrint.PageSetup.RightMargin / Application.CentimetesToPoints(1)
MsgBox UsablePaperWidth
End SubBonjour Migul,
Et en utilisant des parenthèses
UsablePaperWidth = TotalPaperWidth - (shPrint.PageSetup.LeftMargin / Application.CentimetersToPoints(1)) - (shPrint.PageSetup.RightMargin / Application.CentimetersToPoints(1))@+