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

Userform- fermeture

  • Initiateur de la discussion Initiateur de la discussion Popi14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Popi14

XLDnaute Junior
Bonjour à toutes et à tous,

Dans ma userform, j'ai une croix en haut à gauche qui permet de fermer celle-ci comme dans toutes les applications, comme dans toutes les fenêtres. Cependant, j'aimerais contrôler cette petite croix, cette fermeture c'est à dire que je voudrais bloquer la fermeture de ma userform quand on clique dessus.

Pourriez-vous m'aider car je ne connais pas la fonction permettant de gérer cela.

Je vous remercie d'avance,

Cordialement,
Laurent 🙂
 
Re : Userform- fermeture

Bonjour Laurent,

regarde le code ci dessous, ne pas oublier un bouton permettant la sortie :


code à placer dans le module de l'USF
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Cancel = CloseMode = 0
End Sub

bonne soirée
@+
 
Re : Userform- fermeture

Salut Popi14, Pierrot93, et les autres.
J'ai trouver ici même un truc plus cool pour supprimer la croix, c'est dans un module :
'---------------------------------------
Option Private Module
Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub PasDeCroix(USF As UserForm)
Dim hWnd As Long
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", USF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub
'----------------------------------------

et dans le code de ton userform :
'------------------------------------------
Private Sub UserForm_Initialize() 'initialize l'usf a l'ouverture
PasDeCroix Me
'ton code éventuellement
End Sub
'-------------------------------------------

Voila
@ bientot
Bignou77
 
Re : Userform- fermeture

bonsoir le forum,
je remonte ce sujet qui date vraiment désolé.
les solutions apportées sur le forum aux nombreuses questions portant sur la façon de bloquer un USF
m'ont satisfait jusqu'à aujourd'hui...
aujourd'hui, je m'aperçois qu'en appuyant sur la barre "espace" l'usf se ferme tout seul
aviez-vous remarqué cela ?
avez-vous trouvé une parade ?


merci et bonne soirée à réflechir sur ce nouveau défi....😱
 

Pièces jointes

Dernière édition:
Re : Userform- fermeture

Bonjour,

chez moi, sous 2003, l'appui sur la barre d'espace ne déclenche aucun événement de l'usf.... A voir si tu n'utilise pas "application.OnKey" dans ton code... sinon comme précisé par Jean-Marcel🙂 que je salue au passage, mets nous un petit fichier reproduisant l'anomalie....

bonne journée
@+
 
Re : Userform- fermeture

bonjour, de retour du boulot 😛
je vous mets un exemple tout simple qui reprends les 2 codes
et chez moi (ainsi qu'au boulot) la barre espace ferme l'usf
@Pierrot: pour application.OnKey, je ne pense pas où alors c'est par défaut que je l'utilise vu que je ne la connais pas à mon grand reget

bonne journée
ps; la pièce jointe est dans mon 1er post (vu la nuit passée, je n'ai pas trouvé la façon de la joindre dans celui-ci, fatigué le vieux, LOL)
 
Re : Userform- fermeture

Re,

tu utilises un API windows dans ce classeur...
Code:
Option Private Module
 Declare Function GetWindowLongA Lib "User32" _
 (ByVal hWnd As Long, ByVal nIndex As Long) As Long
 Declare Function SetWindowLongA Lib "User32" _
 (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 Declare Function FindWindowA Lib "User32" _
 (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 Sub PasDeCroix(USF As UserForm)
 Dim hWnd As Long
 hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
 "X", "D") & "Frame", USF.Caption)
 SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
 End Sub

ceci doit expliquer cela.... enfin je pense... perso, aucune compétence la dessus...
 
Re : Userform- fermeture

re,
vous êtes décidemment trop fort !
tabstop.
du coup adapté à mon projet actuel, il faut bien penser à mettre cette propriété à tous les boutons qui sont susceptibles de fermer l'usf concerné.

merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…