supprimer la croix d'un userform

denisbouchard

XLDnaute Junior
Bonjour à tout le forum,
J'ai créé un userform sensé me demandé un mot de passe, jusque la tout va bien. Je voudrais rendre la croix en haut à droite de cet userform inactive. Je nai trouvé qu'un seul moyen c'est le propriété "Enable", mais elle me rend tout l'userform inactif. Est-ce-que c'est possible et quelqu'un a-t-il une idée?
Merci par avance.
Denis
 

tototiti2008

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Bonjour Denis,

Il n'y a pas de propriété Enable juste pour la croix du userform
en bas de cette page, dans Discussions similaires, tu as de nombreux fils pour faire disparaître cette croix
Sinon, tu as la possibilité de juste la désactiver avec ce code évènementiel dans le userform

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode <> vbFormCode Then
        Cancel = True
    End If
End Sub

Edit : Bonjour CC :)
 

YANN-56

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Bonjour denisbouchard, et à tous,

Voici un module qui masque la totalité de la "Bande Bleue"
Dans ce cas, il ne faut surtout pas oublier d'ajouter dans l'USF un bouton de fermeture.

Code:
[SIZE=3][COLOR=#000000][FONT=Times New Roman]#If VBA7 Then ' On est en 64 Bits[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare PtrSafe Function GetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare PtrSafe Function SetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare PtrSafe Function FindWindowA Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]#Else ' On est en 32 Bits[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare Function GetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]    Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]#End If[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]Sub CACHER_BANDE_BLEUE(USF As UserForm)[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]Dim hwnd&[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]hwnd = FindWindowA("Thunder" & IIf(Application.version Like "8*", "X", "D") & "Frame", USF.Caption)[/FONT][/COLOR][/SIZE]
[SIZE=3][COLOR=#000000][FONT=Times New Roman]SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And Not &HC00000: DrawMenuBar hwnd[/FONT][/COLOR][/SIZE]
[FONT=Times New Roman][SIZE=3][COLOR=#000000]End Sub[/COLOR][/SIZE][/FONT]


Ce code est adapté pour les versions 32 et 64. Il ne faut pas t'inquiéter des lignes en rouge.

L'appel se fait dans:
Code:
[SIZE=3][COLOR=#000000][FONT=Times New Roman]Private Sub UserForm_Initialize()[/FONT][/COLOR][/SIZE]
[FONT=Times New Roman][SIZE=3][COLOR=#000000]CACHER_BANDE_BLEUE Me[/COLOR][/SIZE][/FONT]
[FONT=Times New Roman][SIZE=3][COLOR=#000000]End Sub[/COLOR][/SIZE][/FONT]

Amicalement,

Yann

P.S. Si tu souhaites ne supprimer que la croix,
il faudra que je fouille dans mes archives.
 

YANN-56

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

#If VBA7 Then ' On est en 64 Bits
Declare PtrSafe Function GetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare PtrSafe Function SetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare PtrSafe Function FindWindowA Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
#Else ' On est en 32 Bits
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
Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
#End If
Sub CACHER_BANDE_BLEUE(USF As UserForm)
Dim hwnd&
hwnd = FindWindowA("Thunder" & IIf(Application.version Like "8*", "X", "D") & "Frame", USF.Caption)
SetWindowLongA hwnd, -16, GetWindowLongA(hwnd, -16) And Not &HC00000: DrawMenuBar hwnd
End Sub
--------------------------------------

Private Sub UserForm_Initialize()
CACHER_BANDE_BLEUE Me
End Sub

Il y a quelque chose qui n'a pas fonctionné ci-dessus avec les balises de codes.
J'ajoute donc ce Post
 

Staple1600

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Bonjour


YANN-56
un second message ne rends pas pour autant le premier plus lisible ;)
(alors que nous disposons heureusement du mode EDITION sur XLD)

CC:
Récurrente pas récursive ;)

PS: Comme vous êtes tous deux adeptes de l'Humour et Dérision, vous ne vous offusquerez pas ce petit post taquin ;)

EDITION: CC: Je vois bien en quoi la question est récurrente, mais j'ai du mal à saisir en quoi elle est récursive ?? ;)
Et si je t'avais pas calculé, je t'aurai point taquiné ;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Re

Alors, CC apulunettes ;)

denis:
Tu m'as l'air de superbement délaissé le moteur de recherche du forum, car comme ne le disait pas CC, cette question est récurrente sur le forum ;)
 
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Re à tous,

A Staple:
1) Si j'ai pensé bon d'ajouter ce deuxième post,
ce n'est que mes tentatives de modifications on échoué.

2) Inutile de poursuivre tant que denisbouchard ne se sera pas manifesté.
Voire avoir pris la peine de fouiller dans les aides XLD, et nous en dire le résultat.

3) A propos de la réceptivité de CC et moi-même quant à ta taquinerie; as-tu-vu la mienne ici:
http://www.excel-downloads.com/forum/186809-humour-et-derision-par-images-22.html#post1176359

A l'auteur de la discussion:
Annihiler la croix de fermeture ou carrément la faire disparaître,
reste un choix qui t'appartient. Je l'ai simplement proposé.

Amicalement,

Yann
 

Misange

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Bonjour

De Laurent Longre :
Code:
Private Declare Function GetWindowLongA Lib "User32" _   
(ByVal hWnd As Long, ByVal nIndex As Long) As Long    
 Private Declare Function SetWindowLongA Lib "User32" _  
 (ByVal hWnd As Long, ByVal nIndex As Long, _   
ByVal dwNewLong As Long) As Long     
Private Declare Function FindWindowA Lib "User32" _   
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long  
    
Private sub UserForm_Initialize() 
 Dim hWnd As Long  
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _  
 "X", "D") & "Frame", Me.Caption)  
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF  
end sub
BONUS : Si tu as de nombreux userforms dans ton classeur, pour éviter de recopier les instructions ci-dessus dans tous tes userforms, placer le code suivant dans un module appellé API après l'instruction Option Private Module Puis dans chaque code de userform mettre :

Code:
Private sub UserForm_Initialize()  
SupprimerFermeture Me  
... autres instructions d'initialisation  
end sub


mais pour que cela fonctionne, il faut dans ce cas enlever le mot Private en début des lignes de déclaration des API.

Ce lien n'existe plus
 

denisbouchard

XLDnaute Junior
Re : supprimer la croix d'un userform

Rebonour à tous,
Merci pour vos innombrables réponses.
Pour Staple1600, j'ai cherché dans l'aide VBA mais j'ai rien trouvé (peut-être une mauvaise recherche). Par contre, effectivement, j'ai largement zapper la recherche sur ce forum.
Merci encore
Denis
 

YANN-56

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

Bonsoir à tous, et surtout à toi,

Comme il est écrit dans ma signature,
un exemple vaut mieux qu'un long discours! Je le joins.

Tu pourras compiler avec le résumé de Misange,
et compléter avec le lien de son magnifique site.
(Ceci dit: "Hors Pub. déguisée" :rolleyes:)

Amicalement, en te conseillant vivement de poursuivre tes rechercher sur XLD
où tu auras certainement moult dialogues pouvant t'aider concrètement.

Yann , disponible si un point te semble obscur.
 

Pièces jointes

  • USF_CONFIG.xls
    30 KB · Affichages: 393
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : supprimer la croix d'un userform

bonjour les amis je cite pas tous le monde!!:):):):):):):):)
a mon humble avis restons simple ....traitons uniquement le clic sur la croix bien suffisant acceder au DLL vraiment quand on peut pas faire autrement enfin mon avis:):)
dans ce cas bien precis je vois ce que veut faire l'ami denisbouchard ayant travailler sur le sujet bien d'autres choses a penser
proteger son projet avec code
cacher les feuilles par vba important en cas de deactivation des macros active seulement par code... surtout pas masquer les feuilles facile a ouvrir
meme avec tous cela un "gros blaireau" connaissant bien excel & ses failles cassera les codes je parles même pas des "cracks" circulant sur internet mais suffisant pour un utilsateur lambda
 

denisbouchard

XLDnaute Junior
Re : supprimer la croix d'un userform

Re à tous,
Merci pour vos réponses, désolé d'avoir aussi tardé à répondre, mais j'était absorbé par un projet "plus pressant". Comme dit Letitia90, je vais rester simple, mais les codes de Yann56 et de carcharodon-carcharias sont très intéressant je garde sous le coude pour d'autres projets.
Encore merci à tous.
Denis
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 613
Membres
103 607
dernier inscrit
lolo1970