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 Sub

Bonjour Migul,

Et en utilisant des parenthèses

UsablePaperWidth = TotalPaperWidth - (shPrint.PageSetup.LeftMargin / Application.CentimetersToPoints(1)) - (shPrint.PageSetup.RightMargin / Application.CentimetersToPoints(1))

@+

Rechercher des sujets similaires à "vba pointstomillimeters largeur colonnes"