XL 2019 Zoom automatique selon la résolution ou la taille écran

pat66

XLDnaute Impliqué
Bonjour à tous

Ma résolution est 1366 x 768 et récemment j'ai testé un fichier sur un écran plus petit, malheureusement l'affichage n'était pas optimisé, il était trop petit , il fallait donc zoomer chaque feuilles

est il possible, grâce à une macro, d'optimiser l'affichage de chaque feuille sachant qu'elles n'occupent pas toujours le même nombre de colonnes ni de lignes, et que chacune a donc besoin d'un zoom différent ?

l'idéal serait qu'à l'ouverture du classeur, excel détecte la résolution de l'écran et optimise l'affichage en plein écran, peut être en tenant compte de ma résolution et des zooms du fichier original

un grand merci à tous

Patrick
 
Solution
tiens on prend en compte la presence ou non de la scroll verticale
VB:
Sub test()
    zooming_columns Range("A:I")
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
enjoy:)

patricktoulon

XLDnaute Barbatruc
re
bonjour il te suffit de zoomer sur la plage voulue

et si le ration de la plage n'est pas concordant zoomer sur le nombre de colonne ou ligne ou les deux avec un calcul simple si tu cherche bien j' ai déjà montré les 4 façons

tu n'a pas besoins de connaitre la résolution de l’écran ;)
 

pat66

XLDnaute Impliqué
re
oui c'est une solution mais je souhaiterai que les différents utilisateurs n'aient pas à le faire que cela se fasse automatiquement,
je vais essayer de retrouver tes posts sur ce sujet bien que j'ai vu que si les feuilles utilisaient les mêmes colonnes et les mêmes lignes, cela serait plus facile
 

pat66

XLDnaute Impliqué
Un grand merci pour ton aide, je vais tester cela demain matin plus longuement sur mon fichier et je reviens vers toi, cela parait correspondre a mes besoins puisque si j'ai bien compris quelque soit la taille de l'écran, ce seront les colonnes A,B,C etc... et lignes 1,2,3, etc... précisées dans Workbook_SheetActivate, qui occuperont tout l'écran et avoir ainsi un affichage optimisé

un grand merci en attendant, bonne soirée
 

pat66

XLDnaute Impliqué
Bonjour, effectivement ce sont les lignes qui commandent, est t'il possible que cela soit les colonnes uniquement en sachant que chaque feuille n'utilise pas forcément le même nombre de colonnes à afficher et que la taille des PC qui doivent lire le fichier sont, soit en 15' soit en 13'

merci
 
Dernière édition:

pat66

XLDnaute Impliqué
Bonjour le fil
Bonjour patricktoulon

je reviens vers toi car je crois que tu m'aider à resoudre un problème d'affichage

J'ai installé le zooming par colonnes comme indiqué plus haut, mais la personne a qui j'envoie le classeur à un écran de 13 pouces en 1366 x 768 , j'ai la même résolution mais en 15 pouces avec un zoom de 93% pour un affichage optimum

Mon ami qui a un 13 pouces doit, pour afficher correctement le classeur, dézoomer à 60%

Est ce que tu peux me dire si il existe une solution pour imposer une taille de zoom selon la taille de l'écran ou peut être as tu une autre solution pour que l'affichage reste optimum quelque soit la taille de l'écran

Un grand merci

Patrick
 

patricktoulon

XLDnaute Barbatruc
Bonjour @patricklopez66
je suis dubitatif car ma fonction n'a pas besoins de connaitre la résolution
on capte simplement le visible range .width que l'on divise par le width de la range voulue pour obtenir le coeef de zoom et ça doit fonctionner sur toute résolution
ne serait ce pas une tablette W8 qu'a ton ami ?
en tout cas c'est bizarre
 

patricktoulon

XLDnaute Barbatruc
tiens si on veut de la précision au millimètre
VB:
Sub test()
    zooming_columns Range("A:I")
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) * 2
        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
et quoi que il faudrait ajouter le test de la présence de la scroll verticale mais bon a tester
 

patricktoulon

XLDnaute Barbatruc
tiens on prend en compte la presence ou non de la scroll verticale
VB:
Sub test()
    zooming_columns Range("A:I")
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
enjoy:)
 

Statistiques des forums

Discussions
312 101
Messages
2 085 297
Membres
102 856
dernier inscrit
primavera49