Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Positionner Userform sur cellule

morest38

XLDnaute Nouveau
Salut à tous,
Voilà j'ai trouvé une solution pour positionner une userform sur la cellule de mon choix. En l’occurrence, la cellule active.
VB:
Option Explicit
Private Declare Function GetDC& Lib _
"user32.dll" (ByVal hwnd&)
Private Declare Function GetDeviceCaps& _
Lib "gdi32" (ByVal hDC&, ByVal nIndex&)
Private Sub UserForm_Initialize()

Dim x#, y#, w#, h#
ActiveWindow.Zoom = 100
x = GetDeviceCaps(GetDC(0), 88) / 72
y = GetDeviceCaps(GetDC(0), 90) / 72
With Me
.StartUpPosition = 0
.Left = ActiveWindow.PointsToScreenPixelsX(ActiveCell.Left * x) * 1 / x
.Top = ActiveWindow.PointsToScreenPixelsY(ActiveCell.Top * y) * 1 / y
End With
End Sub
Ce code marche parfaitement mais il est limité à Windows 32 bit.
Je cherche a le rendre viable pour le 64 bit. Si quelqu'un pouvait me faire profiter de ses lumières ça serait top. Peut être en faisant autrement d'ailleurs, peu importe tant que l'Userform s'ouvre sur une cellule choisie c'est nickel.

Merci d'avance et bonne soirée.
 

morest38

XLDnaute Nouveau
Re,
Effectivement mais je ne suis pas aussi à l'aise lorsque ça touche aux API. Ce code je l'ai trouvé sur ce forum il me semble mais je la partie "Option explicit" je ne la comprends quasiment pas .
Merci quand même de ton aide.
 

morest38

XLDnaute Nouveau
C'est souvent quand il n'y a rien a comprendre que c'est le plus compliqué .
Merci en tous cas pour ton aide!! Ca marche nickel.
Voici le code final:
VB:
Option Explicit
Private Declare PtrSafe Function GetDC& Lib _
"user32.dll" (ByVal hwnd&)
Private Declare PtrSafe Function GetDeviceCaps& _
Lib "gdi32" (ByVal hDC&, ByVal nIndex&)

Bonne soirée.
 

Discussions similaires

Réponses
4
Affichages
441
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…