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

Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
- - Dernière réponse : cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
- 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
Afficher la suite 

Votre réponse

3 réponses

Messages postés
25570
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
364
0
Merci
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
jordane45
Messages postés
25570
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
364 -
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
Commenter la réponse de jordane45
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
51
0
Merci
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
jordane45
Messages postés
25570
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 mai 2019
364 -
Ou...comme je te l'ai montré, de dimensionner en millimètres avec le code que je t'ai donné.
Commenter la réponse de cs_ShayW
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
16
0
Merci
Bonjour,

Une autre solution est dans les options d'impression pour adapter l'impression à la feuille.
cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
51 -
Bonjour
Oui je viens de decouvrir le fit sheet on one page
Commenter la réponse de Patrice33740

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.