Conserver les memes largeurs de colonnes pour n'importe pc

Résolu
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 24 déc. 2018 à 18:39
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 26 déc. 2018 à 11:27
Bonjour,
Je génère un rapport en pilotant excel via le vb.net
le rapport a 10 colonnes
j'ai défini la largeur de chaque colonne et aussi toutes les marges (left top right bottom)
Chez moi tout le rapport rentre dans une feuille A4
Mais dans un autre pc il dépasse la largeur de la feuille
Pour verifier j'ai mesuré la largeur des colonnes par ex chez moi column A a 1,96 cm de largeur
dans l'autre pc 2.01 cm
Merci d'avance

3 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 déc. 2018 à 18:45
Bonjour,

La dimension est donnée en "pixels"
Hors.. le pixel est une unité de mesure qui dépend de la résolution du périphérique sur lequel on affiche.
Donc.. en fonction de l'écran, de la résolution qui lui a été définit, de la résolution de l'imprimante sur laquelle tu imprime...etc... tu n'obtiendras jamais la même dimension.
https://fr.wikipedia.org/wiki/Pixel
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 déc. 2018 à 18:53
Tu peux éventuellement t'inspirer d'un code comme celui la
https://www.exceltip.com/cells-ranges-rows-and-columns-in-vba/set-row-height-and-column-width-in-millimeters-using-vba-in-microsoft-excel.html
Sub SetColumnWidthMM(ColNo As Long, mmWidth As Integer)
' changes the column width to mmWidth
Dim w As Single
    If ColNo < 1 Or ColNo > 255 Then Exit Sub
    Application.ScreenUpdating = False
    w = Application.CentimetersToPoints(mmWidth / 10)
    While Columns(ColNo + 1).Left - Columns(ColNo).Left - 0.1 > w
        Columns(ColNo).ColumnWidth = Columns(ColNo).ColumnWidth - 0.1
    Wend
    While Columns(ColNo + 1).Left - Columns(ColNo).Left + 0.1 < w
        Columns(ColNo).ColumnWidth = Columns(ColNo).ColumnWidth + 0.1
    Wend
End Sub

Sub SetRowHeightMM(RowNo As Long, mmHeight As Integer)
' changes the row height to mmHeight
    If RowNo < 1 Or RowNo > 65536 Then Exit Sub
    Rows(RowNo).RowHeight = Application.CentimetersToPoints(mmHeight / 10)
End Sub
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
24 déc. 2018 à 19:14
Merci
la solution est donc de diminuer la largeur des colonnes de façon de ne pas dépasser la feuille avec le pc cible
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
24 déc. 2018 à 20:32
Ou...comme je te l'ai montré, de dimensionner en millimètres avec le code que je t'ai donné.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 21
25 déc. 2018 à 23:16
Bonjour,

Une autre solution est dans les options d'impression pour adapter l'impression à la feuille.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 déc. 2018 à 11:27
Bonjour
Oui je viens de decouvrir le fit sheet on one page
0
Rejoignez-nous