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
29876
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
338
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
29876
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
338
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
50
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
29876
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
338
Ou...comme je te l'ai montré, de dimensionner en millimètres avec le code que je t'ai donné.
Messages postés
8212
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
22 octobre 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
50
Bonjour
Oui je viens de decouvrir le fit sheet on one page