[UserForm P3] Déplacer quand la barre de titre est otée

Si vous avez suivi la démo P2 et que vous avez ôter la barre de titre le code ci-dessous permet de le déplacer.

Voir une démo générale sur ce tuto.

Dans la partie déclaration de l'UF

ou dans un module si vous avez plusieurs UF à traiter.

Option Explicit

Private Declare Function FindWindowA Lib "user32" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                 (ByVal hwnd As Long, ByVal wMsg As Long, _
                  ByVal wParam As Long, lParam As Any) As Long
 Private Declare Sub ReleaseCapture Lib "user32" ()

 Private Const WM_NCLBUTTONDOWN = &HA1
 Private Const HTCAPTION = 2

Si vous avez mis les déclarations dans un module il faut remplacer Private par Public.

Dans le code de l'UserForm

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim lHwnd As Long
     If Button = vbKeyLButton Then
        '- Recherche du handle de la fenêtre par son Caption
        lHwnd = FindWindowA(vbNullString, Me.Caption)
        If lHwnd = 0 Then Exit Sub
        ReleaseCapture
        SendMessage lHwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
    End If
End Sub

Vous pouvez saisir l'UserForm n'importe où en cliquant sur le bouton gauche maintenu et faire glisser.

Bonsoir, j'ai essayer le code et j'ai une erreur sur "ReleaseCapture" (il s'affiche en jaune), quelqu'un à une idée du pourquoi ?

merci

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim lHwnd As Long
     If Button = vbKeyLButton Then
        '- Recherche du handle de la fenêtre par son Caption
       lHwnd = FindWindowA(vbNullString, Me.Caption)
        If lHwnd = 0 Then Exit Sub
        ReleaseCapture
        SendMessage lHwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
    End If
End Sub

Bonjour,

Tu a bien copier tout le code de la première partie dans la partie déclaration de l'UF.

Si tu a mis les déclarations dans un module général, (pour appel dans plusieurs UF) tu dois changer les déclarations Private en Public.

Tu dis.

A+

EDIT :

Tu peu télécharger un classeur qui reprend cette partie Sur UserFormP5

Si ça peu te facilité la compréhension

Bonjour lermite?

c'estai bien un probleme de "Public"

ca marche, merci

Rechercher des sujets similaires à "userform deplacer quand barre titre otee"