fPpx est bonne.
Cette fonction c'est celle avec l'objet Shell.
Elle me retourne 1,33333333333333333333333333
Je voulais en avoir le coeur net.
Alors....
J'ai testé PointsToScreenPixels, comme ceci :
Tout d'abord :
> Un gros zoom pour bien positionner le curseur.
> trouver une cellule ou il y a un décalage lors du placement de l'Userform
>> si inexistante alors vous n'avez pas de souci...
Positionner le curseur dans l'angle supérieur gauche de la dite cellule activée, lâcher la souris quand c'est parfait, puis lancer la macro suivante grâce à Alt+F8.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Public Type POSITION
Left As Double
Top As Double
End Type
Sub aaa()
Dim P As POINTAPI
Dim pos As POSITION
Dim C As Range, dblPpx As Double
Dim Msg As String
GetCursorPos P
Msg = "curseur positionné à : " & P.X & " " & P.Y & vbCrLf
With CreateObject("WScript.Shell")
dblPpx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72
End With
Set C = ActiveCell
With ActiveWindow.ActivePane
pos.Left = .PointsToScreenPixelsX(C.Left)
pos.Top = .PointsToScreenPixelsY(C.Top)
SetCursorPos pos.Left, pos.Top
Msg = Msg & "Calculé à : " & pos.Left & " " & pos.Top
End With
MsgBox Msg
End Sub |
J'ai bien une différence, pouvant même être importante (4 ou 5).
Partager