Bonjour,
Je dispose d'un code permettant de "griser" le bouton croix de fermeture en haut à droite d'un userform.
Cependant, lorsque j'exécute mon formulaire sur un ordinateur en 64 bits, cela m'indique une erreur de compatibilité.
L'idée serait de rendre compatible mon code qui marche sous 32bits sur ce type d'ordinateur en x64.
Pouvez-vous m'aider SVP ? car il s'agit d'une fonction système et je ne suis pas à l'aise !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 'Fonctions systèmes nécessaires à la désactivation du bouton "Croix de fermeture" de Mise_en_Forme Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As LongMerci d'avance de votre aide !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub CommandButton4_Click() 'Bouton "Formulaire" permettant d'afficher le formulaire Application.ScreenUpdating = False Application.DisplayAlerts = False 'Masquer le bouton "Croix de fermeture" Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Modification.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Modification.Caption & " Introuvable", vbCritical End If 'Affichage du formulaire "Modification" Formulaire.Hide Modification.Show 0 End Sub
GK
Partager