XL 2016 Adaptation taille fichier excel

Lucio

XLDnaute Junior
Bonjour,
Qui pourrait m'aider? j'ai un fichier excel type formulaire (avec texte et case à cocher). Comme je travaille avec 2 écrans de taille différente, lorsque je passe d'un écran à l'autre le texte se décale sur les cases à cocher ou inversement.
Qui aurait une solution svp?
 

Pièces jointes

  • 2020 09 01 Permis de Travail COVID19 (version 1).xlsb.xlsm
    273.9 KB · Affichages: 21

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Déjà si ton tableau était structuré comme je vois en M43 du texte en 1 cellule .....qui s'étend entre deux des cases à cocher ! Bon
peut peut être déjà essayer de mettre un texte par cellule puis la case dans une autre ( même si elle n'est pas liée) etc et refaire un essai
Mais en temps qu'Ancien electronicien, je ne vois aucune raison technique
Moi j'ai renvoyé sur mon TV pas de soucis ....bon c'est juste un renvoi mais c'est idem
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour @Lucio , @hervé62 , @Marcel32

@Lucio
avant de poser une question il serait bien pratique de voir si cet exercice n'a pas déjà été demandé
XLD a un moteur de recherche

@Marcel32
Logiquement, la taille des écrans ne devrait avoir aucune incidence.
bien sur que si si la résolution n'est pas la même(résolution et taille ne sont pas la même chose)
on peut tres bien avoir 2 ecran de taille différente avec la même résolution ou 2 écran de même taille avec 2 résolution différente

donc là il sagit simplement d'appliquer un zoom (inférieur ou supérieure) a une plage
en ce qui concerne ce fichier visiblement c'est un zoom par rapport aux colonnes [A:S]
pour cela il faut calculer
la largeur de l'usable width de l'application par rapport au width de la plage "A:S"
comme je disais plus haut il serait intéressant de voir si il n'y a pas des sources

ici par exemple pour une plage (ligne/colonne)


ou bien encore ici pour adapter uniquement par les colonnes

en ce qui te concerne donc c'est bien un zoom par rapport aux colonnes car tu a bien trop de lignes pour zoomer sur une plage ligne/colonnes
VB:
Sub test()
    zooming_columns Range("A:S")
End Sub
Function zooming_columns(rng As Variant)
    Dim p_topx, marge#
    Dim coeff#
    With ActiveWindow
        .Zoom = 100
        p_topx = (.ActivePane.PointsToScreenPixelsX(72) - .ActivePane.PointsToScreenPixelsX(0)) / 72
        marge = ((.ActivePane.PointsToScreenPixelsX(0) / p_topx) - Application.Left) * (1 + (Abs(ActiveWindow.DisplayVerticalScrollBar)))
        If TypeName(rng) = "Range" Then
            coeff = (Application.UsableWidth - marge) / rng.Width
            .Zoom = 100 * coeff
        Else
            .Zoom = 100
        End If
    End With
    [A1].Select
   End Function
dans la démo ci dessous on voit bien le tableau dans son entière largeur après le zoom calculé
et cela fonctionnera sur tout tes écrans quels qu'ils soient et quelques résolution qu'ils aient

demo7.gif


Bon dimanche
 

Lucio

XLDnaute Junior
re
Bonjour @Lucio , @hervé62 , @Marcel32

@Lucio
avant de poser une question il serait bien pratique de voir si cet exercice n'a pas déjà été demandé
XLD a un moteur de recherche

@Marcel32

bien sur que si si la résolution n'est pas la même(résolution et taille ne sont pas la même chose)
on peut tres bien avoir 2 ecran de taille différente avec la même résolution ou 2 écran de même taille avec 2 résolution différente

donc là il sagit simplement d'appliquer un zoom (inférieur ou supérieure) a une plage
en ce qui concerne ce fichier visiblement c'est un zoom par rapport aux colonnes [A:S]
pour cela il faut calculer
la largeur de l'usable width de l'application par rapport au width de la plage "A:S"
comme je disais plus haut il serait intéressant de voir si il n'y a pas des sources

ici par exemple pour une plage (ligne/colonne)


ou bien encore ici pour adapter uniquement par les colonnes

en ce qui te concerne donc c'est bien un zoom par rapport aux colonnes car tu a bien trop de lignes pour zoomer sur une plage ligne/colonnes
VB:
Sub test()
    zooming_columns Range("A:S")
End Sub
Function zooming_columns(rng As Variant)
    Dim p_topx, marge#
    Dim coeff#
    With ActiveWindow
        .Zoom = 100
        p_topx = (.ActivePane.PointsToScreenPixelsX(72) - .ActivePane.PointsToScreenPixelsX(0)) / 72
        marge = ((.ActivePane.PointsToScreenPixelsX(0) / p_topx) - Application.Left) * (1 + (Abs(ActiveWindow.DisplayVerticalScrollBar)))
        If TypeName(rng) = "Range" Then
            coeff = (Application.UsableWidth - marge) / rng.Width
            .Zoom = 100 * coeff
        Else
            .Zoom = 100
        End If
    End With
    [A1].Select
   End Function
dans la démo ci dessous on voit bien le tableau dans son entière largeur après le zoom calculé
et cela fonctionnera sur tout tes écrans quels qu'ils soient et quelques résolution qu'ils aient

Regarde la pièce jointe 1113245

Bon dimanche
Merci de ton retour. je comprends pas bien, je dois créer une macro c'est ca?
 

Lucio

XLDnaute Junior
Bonjour,


Logiquement, la taille des écrans ne devrait avoir aucune incidence.

Peux-tu nous montrer ce que ça donne sur tes deux écrans ?

re
Bonjour @Lucio , @hervé62 , @Marcel32

@Lucio
avant de poser une question il serait bien pratique de voir si cet exercice n'a pas déjà été demandé
XLD a un moteur de recherche

@Marcel32

bien sur que si si la résolution n'est pas la même(résolution et taille ne sont pas la même chose)
on peut tres bien avoir 2 ecran de taille différente avec la même résolution ou 2 écran de même taille avec 2 résolution différente

donc là il sagit simplement d'appliquer un zoom (inférieur ou supérieure) a une plage
en ce qui concerne ce fichier visiblement c'est un zoom par rapport aux colonnes [A:S]
pour cela il faut calculer
la largeur de l'usable width de l'application par rapport au width de la plage "A:S"
comme je disais plus haut il serait intéressant de voir si il n'y a pas des sources

ici par exemple pour une plage (ligne/colonne)


ou bien encore ici pour adapter uniquement par les colonnes

en ce qui te concerne donc c'est bien un zoom par rapport aux colonnes car tu a bien trop de lignes pour zoomer sur une plage ligne/colonnes
VB:
Sub test()
    zooming_columns Range("A:S")
End Sub
Function zooming_columns(rng As Variant)
    Dim p_topx, marge#
    Dim coeff#
    With ActiveWindow
        .Zoom = 100
        p_topx = (.ActivePane.PointsToScreenPixelsX(72) - .ActivePane.PointsToScreenPixelsX(0)) / 72
        marge = ((.ActivePane.PointsToScreenPixelsX(0) / p_topx) - Application.Left) * (1 + (Abs(ActiveWindow.DisplayVerticalScrollBar)))
        If TypeName(rng) = "Range" Then
            coeff = (Application.UsableWidth - marge) / rng.Width
            .Zoom = 100 * coeff
        Else
            .Zoom = 100
        End If
    End With
    [A1].Select
   End Function
dans la démo ci dessous on voit bien le tableau dans son entière largeur après le zoom calculé
et cela fonctionnera sur tout tes écrans quels qu'ils soient et quelques résolution qu'ils aient

Regarde la pièce jointe 1113245

Bon dimanche
hello j'ai essayé en mettant le code dans une macro mais ca ne fonctionne pas...
 

TooFatBoy

XLDnaute Barbatruc
bien sur que si si la résolution n'est pas la même(résolution et taille ne sont pas la même chose)
Il parle d'écrans ayant des tailles différentes, et non des résolutions différentes !!!

De toute façon la résolution ne devrait pas non plus avoir d'incidence sur le décalage du texte par rapport aux cases à cocher, sauf si les calculs d'adaptation à la résolution sont un peu pourris... 😁


Remarque : autrefois tous les moniteurs avaient la même résolution, c'est pourquoi on prenait des moniteurs plus grands pour pouvoir afficher plus de choses à la fois.
Mais aujourd'hui ce n'est plus du tout le cas.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re

@Marcel32 et si justement
a savoir!!! qu'excel a sa propre échelle
si un écran a une résolution plus basse et que les dimensions dans excel restent identique dans le fichier la partie concernée prendra plus de place a l"écran et je te parle même du DPI

non c'est plus comme avant ca il faut se le dire une bonne fois pour toute ;)

ici l'astuce que je propose c'est
mesurer le usable.width de l'application ( et là oui!! on s'en fout de la résolution) car on a un repere dimentionel
une fois que l'on a le width du usable de l'application on mesure le with de la plage ici [A:S]
l'un / par l'autre tu a ton coefficient

ATTENTION!! le usable de donne avec le "HEADING" il te faut donc le soustraire
pour cela les fonctions ".PointsToScreenPixels" entre en jeu pour le calcul pixel par ce qu'elle calcule en pixel et le left - le (0) qui te donne la largeur de la bande des numero de lignes


voila comme ca on a pas besoins de connaitre aucune dimensions on compare l'un à l'autre
et comme on n'utilise pas de mesure en dur c'est calculé pour chaque ecran

voila
si la plage avait été raisonnablement dimensionnée on utiliserait (la méthode classique)le select de la plage et le zoom true
mais là on a besoins que de la largeur des colonnes

voili voilou ;)
 

TooFatBoy

XLDnaute Barbatruc
si un écran a une résolution plus basse et que les dimensions dans excel restent identique dans le fichier la partie concernée prendra plus de place a l"écran
En admettant que ce que tu dis soit vrai (pas compris ce que veut dire "les dimensions dans excel restent identique dans le fichier"), est-ce que ça doit pour autant décaler le texte ?
En toute logique, si Excel effectue des calculs de mise à léchelle moisis, oui. Sinon, il n'y a aucune raison que le texte se décale !


J'ai l'impression que la méthode que tu donnes n'a absolument rien à voir avec des résolutions différentes mais plutôt avec des définitions d'affichage différentes.
Et je crois bien que ça n'a aucun rapport avec le problème rencontré.

Je suppose que simplement en changeant le zoom de la feuille, le texte va se décaler légèrement, et ce quel que soit l'écran utilisé.
@Lucio peux-tu essayer de modifier le zoom de ta page pour voir si le texte se décale, s'il te plait ?
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
les controls formulaire et activX et cellule ne sont pas dimensionnées de la même facon avec la même méthode dans excel
c'est pour ça que souvent on a des soucis avec la propriété "déplacer avec les cellules"

non je ne confond pas elles sont liées (malheureusement avec excel )

tiens kado pour tous
VB:
Function pointToPixel()
    With ActiveWindow
        .Zoom = 100
        pointToPixel = ((.ActivePane.PointsToScreenPixelsX(72) - .ActivePane.PointsToScreenPixelsX(0)) / 72)
    End With
End Function

Function largeur_Heading()
'combien mesure en largaeur la bande des numéros de ligne
    With ActiveWindow
        .Zoom = 100
        .ScrollColumn = 1
        largeur_Heading = ((.ActivePane.PointsToScreenPixelsX(0) / pointToPixel) - Application.Left) & " Points"
        'traduction
        'largeur_Heading= ((le point 0 left de la grille(ou [A1].left comme tu veux )!!!!a partir de  la gauche de l'ecran !!!! )et diviser par le coeef pixel to point   - le left de la fenetre application( a partir de la gauche de l'ecran
    End With
End Function
Function DPI()
' à combien est paramétré mon DPI
    With ActiveWindow
        .Zoom = 100
        Z = (.Zoom) / 100
        If Val(Z * 10) Mod 2 <> 0 Then ssupp = 0.1: Z = Z + ssupp
        DPI = (((.ActivePane.PointsToScreenPixelsY(72) - .ActivePane.PointsToScreenPixelsY(0)) / 72) / Z) * 72

    End With
End Function

Sub test4()
    Texte = Texte & "le coéfficient point to pixel sur mon pc est de " & pointToPixel & vbCrLf
    Texte = Texte & "avec un parametre DPI sur mon pc  de " & DPI & "<< soit 125% >>" & vbCrLf & vbCrLf
    Texte = Texte & "Donc!! " & pointToPixel & " divisé par 1.25 =" & pointToPixel / 1.25 & vbCrLf
    Texte = Texte & "qui est bien au coéff!! point to pixel en DPI 96 soit <<100%>>" & vbCrLf
    
    Texte = Texte & "la largeur de mon heading (numero de ligne) est de " & largeur_Heading
    MsgBox Texte
End Sub
voila comment est paramétré mon pc
1629023571740.png
 

Lucio

XLDnaute Junior
En admettant que ce que tu dis soit vrai (pas compris ce que veut dire "les dimensions dans excel restent identique dans le fichier"), est-ce que ça doit pour autant décaler le texte ?
En toute logique, si Excel effectue des calculs de mise à léchelle moisis, oui. Sinon, il n'y a aucune raison que le texte se décale !


J'ai l'impression que la méthode que tu donnes n'a absolument rien à voir avec des résolutions différentes mais plutôt avec des définitions d'affichage différentes.
Et je crois bien que ça n'a aucun rapport avec le problème rencontré.

Je suppose que simplement en changeant le zoom de la feuille, le texte va se décaler légèrement, et ce quel que soit l'écran utilisé.
@Lucio peux-tu essayer de modifier le zoom de ta page pour voir si le texte se décale, s'il te plait ?
le texte ne se décale pas mais les cases à cocher oui
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 137
Membres
112 668
dernier inscrit
foyoman