connaitre l'address du visible range en fonction du dpi et de la resolution

patricktoulon

XLDnaute Barbatruc
bonjour a tous
pour ceux qui sont en dpi96 je voudrais connaitre l'address du visible range avec un écran classique (15,17,21 pouce)

j'ai juste besoin de faire un choix de max colonne/ligne fonctionnant avec toute résolution par l’intermédiaire du zoom sur range

merci pour les retours
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bizarre ca
car normalement
je zoom a 100
prend le width de A:I
divise par le visible range=coeff
et zoom 100+ coeff

donc indépendamment du dpi ou je ne sais quoi d'autre a foutre, tu devrais avoirs A:I visible sur X lignes
c'est pas logique ton truc
peut etre n'est tu pas en dpi 96 résolution classique le plus courante mais plus bas et les calculs a ce moment la sont pas valides j'ai deja vu ca sur un vieux XP sp2
 

jmfmarques

XLDnaute Accro
Re, quand-même ...
1) le titre de la présente discussion ("connaitre l'address du visible range en fonction du dpi et de la resolution"), conforté par la rédaction du premier message, "bride" d'emblée toute autre considération, y compris si l'on peut deviner le but final de la démarche
2) Je n'ai pas ouvert (je ne le fais jamais) le classeur joint, dont l'ouverture est proposée en vue de relater les effets constatés, mais je peux parfaitement lire entre les lignes des différents messages, tant la finalité recherchée que la méthode tentée

3) il est vraisemblable que ma présente intervention eût revêtu un tout autre aspect si la discussion (de par son titre et la question posée) avaient été autres (exposé d'un but à atteindre et demande d'aide à la détermination de la méthode à retenir pour ce faire).
4) Mais ce n'est pas le cas et je vais donc me contenter d'appeler l'attention sur le défaut essentiel (mais pas le seul) du choix fait d'utiliser la propriété VisibleRange.width : est considérée visible toute cellule dont on ne voit qu'une partie.
Amitiés

 

jmfmarques

XLDnaute Accro
Bonjour Marcel32
La même unité que celle utilisée pour une cellule : le point.

EDIT : le point est l'unité graphique utilisée par VBA/Excel pour tout objet de l'application elle-même et donc contenu (à ne pas confondre avec au même niveau visuel) dans la fenêtre de l'application Excel.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
@jmfmarques si tu n'ouvre pas les fichiers voici le code
VB:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Application.WindowState = xlMaximized
    With ActiveWindow
        .ScrollColumn = 1: .ScrollRow = 1: .Zoom = 100: coeff = (.VisibleRange.Width - 15) / [A:Ai].Width: .Zoom = 100 * coeff
        [A1].Activate
    End With
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Bonjour Marcel32
La même unité que celle utilisée pour une cellule : le point.
Merci pour ta réponse. :)

Une colonne fait 10,71 points.
Avec le zoom de la feuille à 100 %, mon moniteur affiche 47 colonnes et environ 1/4 de la 48e colonne.
Et pourtant ActiveWindow.VisibleRange.Width me renvoie 2880.

Je pige pô. :(
Si vous avez une explication brève (pour ne pas trop polluer le fil de discussion de Patrick), je suis preneur.
 

jmfmarques

XLDnaute Accro
A PatrickToulon
Je l'avais également deviné, ce code :)
Il confirme ma remarque plus haut en ce sens qu'il ne saurait être fiable car très dépendant de facteurs différents.
Là s'arrête maintenant ma participation à la présente discussion, telle que rédigée.
 

TooFatBoy

XLDnaute Barbatruc
Ah, OK. Donc tout n'est pas en point dans Excel.

Jamais je n'aurais cru que "10,71" était un nombre de caractères vu que ça dépend de la taille de la police et que de plus les polices sont généralement à chasse variable.

En tout cas, merci pour la réponse. :)

PS : j'obtiens 10,71 et 60. Et du coup le 60 me donne bien 2880 si on compte 48 colonnes. ;)
 

patricktoulon

XLDnaute Barbatruc
mais bon pour en revenir a mon truc
je le redis indépendamment de la résolution du dpi et de tout autre facteur
si je prend
  1. le visiblerange (donc en point)même si la dernière colonne n'est pas entièrement visible
  2. le width de [A:I](donc en point)
  3. que je divise [A:i].width par le visiblerange .width
  4. et que j’applique ce coeff au zoom
  5. vous devriez avoir A:I visible a l’écran
si vous me dites que non vous avez un soucis avec le zoom
pour plus de précision j'aurais pu utiliser application.usable.width
c'est pas la précision que je recherche mais juste de voir A:I a l'ecran
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 567
dernier inscrit
johnregular1