Empecher le clic et le double clic sur la barre de titre de l'userform

alias_2003

XLDnaute Occasionnel
Bonjour,
J'aimerais empêcher le clic sur la barre de titre de l'userform. J'utilise le code suivant :
Code:
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
Dim MonCurseur As point
If x < 10 Or y < 10 Or x > Me.Width - 10 Or y > Me.Height - 30 Then
    GetCursorPos MonCurseur
    If x < 10 Then SetCursorPos MonCurseur.xx + 12, MonCurseur.yy
    If y < 10 Then SetCursorPos MonCurseur.xx, MonCurseur.yy + 12
    If x > Me.Width - 10 Then SetCursorPos MonCurseur.xx - 12, MonCurseur.yy
    If y > Me.Height - 30 Then SetCursorPos MonCurseur.xx, MonCurseur.yy - 12
Else: Application.StatusBar = x & "-" & y
End If
End Sub
Ce code fonctionne bien, mais si l'on va un peu vite, il est possible d'accèder à la barre de titre (caption) de l'userform...
Je précise que je ne souhaite pas utiliser d'api, ni d'evenement userform_layout (j'obtiens une erreur 384 que je n'explique pas...), ni supprimer le caption...
Avez-vous une idée ?
Merci beaucoup,
Amicalement
 

Lone-wolf

XLDnaute Barbatruc
Re : Empecher le clic et le double clic sur la barre de titre de l'userform

Bonsoir Alias,

peut-être comme ceci

Code:
Public Cancel, CloseMode As Boolean
Private Sub CommandButton1_Click()
CloseMode = 1
Cancel = False
Unload Me
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
End Sub



A+ :cool:
 

alias_2003

XLDnaute Occasionnel
Re : Empecher le clic et le double clic sur la barre de titre de l'userform

Bonjour lone-wofl, le Forum
Merci de ta réponse ! Ton code fonctionne très bien pour empêcher la fermeture de l'userform par la croix rouge ! Merci !
Dans mon croix ce que j'aimerais si possible rendre la barre des titres inactive bien que présente... Que l'utilisateur ne puisse pas l'atteindre...
Merci beaucoup !
 

Roland_M

XLDnaute Barbatruc
Re : Empecher le clic et le double clic sur la barre de titre de l'userform

Bonjour,

voir ce code de Mohamed Lamine Belhannachi
le classeur complet de démonstration
et le même classeur que j'ai nettoyé pour ne garder que la fonction déplacement !

mais attention avec les API 32 et 64 ! il faudrait revoir les déclarations adéquates, ici je ne l'ai pas fait !
 

Pièces jointes

  • Userf DeplaceDemonstration.xls
    45 KB · Affichages: 39
  • Userf ResizeDemonstration.xls
    49.5 KB · Affichages: 40

alias_2003

XLDnaute Occasionnel
Re : Empecher le clic et le double clic sur la barre de titre de l'userform

Bonjour Roland !
Tes fichiers sont juste excellents !!! Je vais les utiliser sur plein d'application !
Par contre, j'aurais aimé (si c'est possible...) une solution sans api...
Merci encore :) !
 

Roland_M

XLDnaute Barbatruc
Re : Empecher le clic et le double clic sur la barre de titre de l'userform

bonjour,

malheureusement non !
perso je les ai évite un maximum malgré leurs utilités j'en convient !
exceptionnellement GetSystemMetrics, qui je pense ne devrait jamais trop poser de problème(quoique !?)
car apparemment, que je sache (si qq peut apporter la solution du contraire je suis preneur), on ne test pas Win64 !?
Code:
' GetSystemMetrics résolution (0)=X (1)=Y
#If VBA7 Then 'VBA7 depuis office 2010
    Private Declare PtrSafe Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#Else '< VBA7 donc 32
    Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
#End If

quand c'est pour soit on peut toujours solutionner si problème avec une nouvelle version
mais si c'est un classeur qui tourne en entreprise et que ça plante avec des API qui doivent être déclarées pour un system 64, et que la personne qui l'a réalisé n'est plus là (mon cas avec mon fils, si demain je n'y suis plus !?) c'est la cata pour lui !?
 

Discussions similaires