Conserver les memes largeurs de colonnes pour n'importe pc [Résolu]

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
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

Messages postés
28956
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
333
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
Messages postés
28956
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
333
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
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
Messages postés
28956
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 juillet 2020
333
Ou...comme je te l'ai montré, de dimensionner en millimètres avec le code que je t'ai donné.
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
19
Bonjour,

Une autre solution est dans les options d'impression pour adapter l'impression à la feuille.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Bonjour
Oui je viens de decouvrir le fit sheet on one page