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
J'ai fait tous mes réglages à 100% 96 dpi.
J'en connais un qui va être content : il a réussi à te contaminer.En 125% 120 dpi
Si tu parles des tableaux des constantes de GetSystemMetrics() le fichier qui les liste est dans le Post #132.As-tu un classeur à fournir pour obtenir ces données,
Dans le Post #123 cité il y a 2 fichiers.ton rect relatif au screen c'est ma méthode avec rangefrompoint ? ou tu fait ca avec api?
me semble t il l'avoir déjà donnéTes tableaux sont super intéressants : il semble y avoir plein d'informations dedans !
As-tu un classeur à fournir pour obtenir ces données, ou est-ce trop tard parce que tu l'as déjà effacé de ton HDD ?
'-----------------------------------------------
'Exact Visible Range RECT relative to the Screen
'-----------------------------------------------
Function ExactVisibleRangeRECTToScreen(Window As Window) As RECT
Dim EVRRS As RECT
Dim LastVisibleRangeCell As Range
Dim LastXPixelVisible As Long
Dim LastYPixelVisible As Long
With Window.Panes(Window.Panes.Count)
Set LastVisibleRangeCell = .VisibleRange.Cells(.VisibleRange.Cells.Count).Offset(-1, -1)
LastXPixelVisible = .PointsToScreenPixelsX(LastVisibleRangeCell.Left)
LastYPixelVisible = .PointsToScreenPixelsY(LastVisibleRangeCell.Top)
EVRRS.Left = .PointsToScreenPixelsX(.VisibleRange.Left)
Do While Not .Parent.RangeFromPoint(LastXPixelVisible, LastYPixelVisible) Is Nothing
LastXPixelVisible = LastXPixelVisible + 1
Loop
LastXPixelVisible = LastXPixelVisible - 1
EVRRS.Right = LastXPixelVisible + 1
EVRRS.Top = .PointsToScreenPixelsY(.VisibleRange.Top)
Do While Not .Parent.RangeFromPoint(LastXPixelVisible, LastYPixelVisible) Is Nothing
LastYPixelVisible = LastYPixelVisible + 1
Loop
LastYPixelVisible = LastYPixelVisible - 1
EVRRS.Bottom = LastYPixelVisible + 1
End With
'Return value
ExactVisibleRangeRECTToScreen = EVRRS
End Function
Tu n'as toujours pas corrigé le Return de cette fonction qui doit être un Long en 64bits aussi.me semble t il l'avoir déjà donné
'-----------------------------------------------
'Exact Visible Range RECT relative to the Screen (Method RangeFromPoint)
'-----------------------------------------------
Function ExactVisibleRangeRECTToScreen_RangeFromPoint(Window As Window) As RECT
Dim EVRRS As RECT
Dim LastVisibleRangeCell As Range
Dim LastXPixelVisible As Long
Dim LastYPixelVisible As Long
With Window.Panes(1)
EVRRS.Left = .PointsToScreenPixelsX(.VisibleRange.Left)
EVRRS.Top = .PointsToScreenPixelsY(.VisibleRange.Top)
End With
With Window.Panes(Window.Panes.Count)
Set LastVisibleRangeCell = .VisibleRange.Cells(.VisibleRange.Cells.Count).Offset(-1, -1)
LastXPixelVisible = .PointsToScreenPixelsX(LastVisibleRangeCell.Left)
LastYPixelVisible = .PointsToScreenPixelsY(LastVisibleRangeCell.Top)
Do While Not .Parent.RangeFromPoint(LastXPixelVisible, LastYPixelVisible) Is Nothing
LastXPixelVisible = LastXPixelVisible + 1
Loop
LastXPixelVisible = LastXPixelVisible - 1
EVRRS.Right = LastXPixelVisible + 1
Do While Not .Parent.RangeFromPoint(LastXPixelVisible, LastYPixelVisible) Is Nothing
LastYPixelVisible = LastYPixelVisible + 1
Loop
LastYPixelVisible = LastYPixelVisible - 1
EVRRS.Bottom = LastYPixelVisible + 1
End With
'Return value
ExactVisibleRangeRECTToScreen_RangeFromPoint = EVRRS
End Function
faut pas oublier que c'est moi qui t' ai donné cette astuceQuant au parcours des pixels, il faut évidemment le faire à partie de la dernière Pane et pas de la 1ère.
J'espère que t'as compris ça. Fait 4 Panes et affiche l'adresse de la dernière cellule du 1er et du dernier et tu comprendras.