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)
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.
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.
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
et cela que je soit fractionné ou pas
car la j'utilise vraiment les données rectangle des fenêtres
ce qui s y passe ou ce que l'on y fait dedans on s'en fou