XL 2016 VBA - Exact Visible Range

Dudu2

XLDnaute Barbatruc
Bonjour,

VBA nous donne un Window.VisibleRange qui inclut les dernières colonne et ligne pas forcément complètement visibles.
C'est souvent handicapant quand on veut avoir un Window.ExactVisibleRange qui exclut les parties non visibles des dernières colonne et ligne.

J'ai dû faire un code sans trop d'API pour tenter de définir cet ExactVisibleRange mais hélas, j'ai aussi dû utiliser des constantes qui semblent valides chez moi. Mais le sont-elles chez vous ?
VB:
Const VerticalScrollBarBordersPixels As Long = 2 * 2.5    'Borders around the Vertical Scroll Bar
Const HorizontalScrollBarBordersPixels As Long = 2 * 4    'Borders around the Horizontal Scroll Bar
Const StatusBarHeightPixels = 26

Merci par avance de tester ce code pour vérifier qu'en toutes configurations de fenêtre (maximisée et réduite), la Shape Rectangle s'affiche bien aux limites basses de la partie visible.
Si ce n'est pas le cas, un petit screenshot et des infos sur la version Window et Office (versions et bits)

1732747330635.png


Fichier: voir plus loin
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Oui le freezpanes bouffe 1 pixel qu'il faut retirer avec le RangeFromPoint+.
Ton RangeFromPoint fonctionne alors puisqu'il lui manque 1 pixel en H et en V à condition d'avoir 4 panes. Sinon il faut tester.
Pas avec le Usable qui retourne la bonne valeur !
Le split prend aussi des pixels.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
En cas de Split ou FreezePanes ça devient plus complexe avec un RangeFromPoint car il faut déterminer dans quel Pane se trouve la dernière cellule et faire un décalage d'1 pixel:
- en V et en H si Pane 4
- en V si Pane 2 si 2 Panes et splitrow > 0
en H si Pane 2 si 2 panes et splitcolumn > 0
Je crois que je vais rester uniquement sur le Usable qui donne la bonne valeur, qu'on soit en Split, FreezPanes ou non.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
les bonnes valeurs sont
les usables +les NUIScrollbar-bien evidement le header qui ont la classe XLCTL
bien entendu pour le left sans le header
si je fait avec ces données des fenêtre de ma toute nouvelle fonction qui va me chercher les rectangle
voila si j'utilise les donnée rectangle des fenêtre ad hoc retournée par ma petite sub
demo1.gif


Indiscutable ;)
 

Statistiques des forums

Discussions
315 085
Messages
2 116 071
Membres
112 648
dernier inscrit
Otete Christian