Private Sub UserForm_Initialize()
'-------------------------------------------------------- Positionnement UserForm
Me.StartUpPosition = 0 'Déclarer position MANUAL
Me.Left = Application.Left +...
C'est ta toute dernière version que j'ai testée. C'est peut-être ça la différence.Mon code a une certaine propension à ne pas fonctionner chez @patricktoulon.
Je ne crois pas, car @patricktoulon est en VBA7 (Office 2013), donc les derniers ajustements pour les déclarations non-VBA7 ne s'appliquent pas à lui.C'est ta toute dernière version que j'ai testée. C'est peut-être ça la différence.
#If Win64 Then
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#Else
Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
#End If
Private Declare PtrSafe Function SetParent Lib "user32" (ByVal hWndChild As LongPtr, ByVal hWndNewParent As LongPtr) As LongPtrPrivate Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Sub UserForm_Activate()
Dim hwnd As LongPtr
hwnd = FindWindow(vbNullString, Me.Caption)
SetParent hwnd, Application.hwnd
Me.Move (Application.Width - Me.Width) / 2, (Application.Height - Me.Height) / 2
End Sub
Private Sub UserForm_Activate()
Me.Move ActiveWindow.Left + (ActiveWindow.Width - Me.Width) / 2, _
ActiveWindow.Top + (ActiveWindow.Height - Me.Height) / 2
End Sub
Toutafé. Et c'est bien ce qu'il faitSoit il utilise les coordonnées de la fenêtre (design dwmapi.dll) puis positionne dans le milieu de la fenêtre
Private Sub UserForm_Initialize()
'-------------------------------------------------------- Positionnement UserForm
Me.StartUpPosition = 0 'Déclarer position MANUAL
Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
End Sub
Ce que tu appelles le "Caption", est-ce la Barre de titre du UserForm ?Dans les 2 cas il peut supprimer le Caption
Non pas si excel n'est pas afficher sur l’écran principalToutafé. Et c'est bien ce qu'il fait:
Autant faire au plus simple.VB:Private Sub UserForm_Initialize() '-------------------------------------------------------- Positionnement UserForm Me.StartUpPosition = 0 'Déclarer position MANUAL Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2 Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2 End Sub
Ce que tu appelles le "Caption", est-ce la Barre de titre du UserForm ?
Si oui, quel serait l'intérêt de la supprimer ?