XL 2016 VBA - Calcul des hauteur et largeur des Headings (pour les forts en thème)

Dudu2

XLDnaute Barbatruc
Bonjour,

J'ai fait un code qui permet de calculer (du moins je le pense) la hauteur du Heading horizontal et la largeur du Heading vertical.
Ce calcul fonctionne apparemment bien en toutes occasions...SAUF SI le Zoom n'est pas à 100% ET QUE le ScrollRow ou le ScrollColumn ne sont pas à 1.

Je me suis cassé les dents sur ce calcul pour trouver la cause du non fonctionnement sous cette condition que j'ai contourné par un Scroll en 1/1 (A1) sous ScreenUpdating = False.
Mais évidemment ce n'est pas très satisfaisant.

Pour tester le calcul qui foire sans le Scroll salvateur, modifier la constante pré-processeur à #Const USE_SCROLL = False

Attention ! Le facteur Zoom n'a pas à être introduit dans le calcul actuel car aussi bien PointsToScreenPixelsX/Y que VisibleRange.Left/Top tiennent déjà compte du Zoom.
Sous un zoom donné il y a une progression du décalage proportionnelle à la Width des colonnes et la Height des lignes prédédant la 1ère cellule du VisibleRange.
Je n'ai pas trouvé les éléments de calcul qui permettraient de les déterminer. C'est du lourd !
 

Pièces jointes

  • Calcul des largeur et hauteur des Headings.xlsm
    38.8 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
Bonjour @patricktoulon,

Si on est à -X à gauche .WindowState ne peut pas être xlMaximized.
C'est seulement le .WindowState = xlMaximized qui nous pose problème avec ses .Left et .Top qui ne sont pas à zéro (-4.4 chez moi).

De toutes façons j'ai testé et ça fonctionne.
A moins que tu trouves un cas où ça ne fonctionne pas que je n'aurais pas vu.
 

patricktoulon

XLDnaute Barbatruc
Bonjour @patricktoulon,
Si on est à -X à gauche .WindowState ne peut pas être xlMaximized.
FAUX !!!
en maximisation je suis à -6 de left et -5 de top
demo1.gif
 

patricktoulon

XLDnaute Barbatruc
re
je ne vois pas de quoi tu parles (vrai/faux X )
je le redis quand excel est maximisé le left et/ou top ne sont pas à zero
ça c'est un fait;)

pour information voila les captures du heading maximisé et non maximisé
peut être te faudra il mettre un coup de loup pour voir ce qui se passe
maximisé et capturable
1729592172374.png


non maximisé capturé
1729592146933.png


en grossissant le truc pour la non maximisé
on voit bien la partie supplémentaire a droite du trait noir
1729592637309.png
 

patricktoulon

XLDnaute Barbatruc
re
il y a en effet un effet illogique dans le mode windowstate xlmaximized
VB:
Sub testxx()
    Dim P1#, P2
    With ActiveWindow.Panes(1)

        P1 = (.PointsToScreenPixelsX(.Parent.VisibleRange.Cells(1).Left) * 0.75)
        With Application
            If Application.Left < 0 Then

                ' j annule la reduction du left negatif de app  si le mode windowstate est xlmaximized
                If .WindowState = xlMaximized Then ML = 0 Else ML = Application.Left

                P2 = P1 - ML
            Else
                P2 = P2 - Application.Left
            End If
        End With
    End With

    MsgBox "l 'application est à " & Application.Left & " de left " & vbCrLf & _
            "donc le calcul devrait être " & vbTab & P1 & " moins " & Application.Left & vbCrLf & _
            "le calcul réellement effectué est :" & vbTab & P1 & " moins " & ML & vbCrLf & _
            "le HeadingWeight = " & P2 & " Point"

End Sub
 

Statistiques des forums

Discussions
314 450
Messages
2 109 731
Membres
110 553
dernier inscrit
loic55