OVH Cloud OVH Cloud

UserForm

4 réponses
Avatar
EG
Bonjour,

J'avais fait une demande concernant le bouton Fermer qui vient
automatiquement avec le UserForm pour l'enlever. J'ai eu ma réponse. La
personne m'indiquait d'aller voir le site suivant :
http://www.excelabo.net/xl/userforms.php#croixuser

Avec le code trouver, j'ai été en mesure d'enlever le bouton mais ça
n'empêchait plus ma forme de bouger. Dans la même page web, j'ai trouvé un
endroit qui me permettait d'empêcher le UserForm de bouger et d'enlever le
bouton Fermer mais ça enlève le cadre et la bordure de titre aussi. Je veux
les conserver et je ne trouve pas sur ce site un exemple me permettant de
faire tout ce que je veux.

Alors, je veux avoir le cadrage standard et la barre de titre. Je veux
qu'il n'y ait pas de bouton Fermer et je veux que la fenêtre ne bouge pas.

Pouvez-vous m'aider ?

De plus, j'aimerais comprendre comment fonctionne les appellations suivantes
:

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

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

Est-ce qu'il y a un site qui explique le fonctionnement de ces déclarations ?

Merci !

4 réponses

Avatar
michdenis
Bonjour EG,

Voici ce que tu veux !!!

Pour les explications.... cela te prendrait un bon livre sur les API .... et cela dépasse le cadre des échanges de ce forum !

Ce qui suit est une combinaison de procédures émises je pense par Laurent Longre et Michel Perron.

Déclaration des API dans le haut de ton formulaire (userform)
'-----------------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu&, ByVal nPosition&, ByVal wFlags&) As Long

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

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 Sub UserForm_Initialize()
Const MF_BYCOMMAND As Long = &H0&
Const SC_MOVE As Long = &HF010&
Dim hwnd As Long, hSysMenu As Long

hwnd = FindWindow(vbNullString, Me.Caption)
hSysMenu = GetSystemMenu(hwnd, False)
DeleteMenu hSysMenu, SC_MOVE, MF_BYCOMMAND
End Sub
'-----------------------------------
Private Sub UserForm_Activate()
Dim hwnd As Long, exLong As Long
hwnd = FindWindowA(vbNullString, Me.Caption)
exLong = GetWindowLongA(hwnd, -16)
If exLong And &H880000 Then
SetWindowLongA hwnd, -16, exLong And &HFF77FFFF
Me.Hide: Me.Show
End If
End Sub
'-----------------------------------


Salutations!



"EG" a écrit dans le message de news:
Bonjour,

J'avais fait une demande concernant le bouton Fermer qui vient
automatiquement avec le UserForm pour l'enlever. J'ai eu ma réponse. La
personne m'indiquait d'aller voir le site suivant :
http://www.excelabo.net/xl/userforms.php#croixuser

Avec le code trouver, j'ai été en mesure d'enlever le bouton mais ça
n'empêchait plus ma forme de bouger. Dans la même page web, j'ai trouvé un
endroit qui me permettait d'empêcher le UserForm de bouger et d'enlever le
bouton Fermer mais ça enlève le cadre et la bordure de titre aussi. Je veux
les conserver et je ne trouve pas sur ce site un exemple me permettant de
faire tout ce que je veux.

Alors, je veux avoir le cadrage standard et la barre de titre. Je veux
qu'il n'y ait pas de bouton Fermer et je veux que la fenêtre ne bouge pas.

Pouvez-vous m'aider ?

De plus, j'aimerais comprendre comment fonctionne les appellations suivantes
:

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

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

Est-ce qu'il y a un site qui explique le fonctionnement de ces déclarations ?

Merci !
Avatar
EG
Bonjour michdenis

Ça ne fonctionne pas.

Ça me donne toujours un UserForm sans bouton Fermer qui ne bouge pas et le
cadrage n'est plus là. Je suis avec Excel 2000.

Est ce que Laurent Longre au Michel Perron ont un site sur lequel je
pourrais poser ma question ou à tu une autre solution ?

As-tu le titre d'un bon volume API (en français) que je pourrais me procurer ?

Merci de ta collaboration !


Bonjour EG,

Voici ce que tu veux !!!

Pour les explications.... cela te prendrait un bon livre sur les API .... et cela dépasse le cadre des échanges de ce forum !

Ce qui suit est une combinaison de procédures émises je pense par Laurent Longre et Michel Perron.

Déclaration des API dans le haut de ton formulaire (userform)
'-----------------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu&, ByVal nPosition&, ByVal wFlags&) As Long

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

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 Sub UserForm_Initialize()
Const MF_BYCOMMAND As Long = &H0&
Const SC_MOVE As Long = &HF010&
Dim hwnd As Long, hSysMenu As Long

hwnd = FindWindow(vbNullString, Me.Caption)
hSysMenu = GetSystemMenu(hwnd, False)
DeleteMenu hSysMenu, SC_MOVE, MF_BYCOMMAND
End Sub
'-----------------------------------
Private Sub UserForm_Activate()
Dim hwnd As Long, exLong As Long
hwnd = FindWindowA(vbNullString, Me.Caption)
exLong = GetWindowLongA(hwnd, -16)
If exLong And &H880000 Then
SetWindowLongA hwnd, -16, exLong And &HFF77FFFF
Me.Hide: Me.Show
End If
End Sub
'-----------------------------------


Salutations!



"EG" a écrit dans le message de news:
Bonjour,

J'avais fait une demande concernant le bouton Fermer qui vient
automatiquement avec le UserForm pour l'enlever. J'ai eu ma réponse. La
personne m'indiquait d'aller voir le site suivant :
http://www.excelabo.net/xl/userforms.php#croixuser

Avec le code trouver, j'ai été en mesure d'enlever le bouton mais ça
n'empêchait plus ma forme de bouger. Dans la même page web, j'ai trouvé un
endroit qui me permettait d'empêcher le UserForm de bouger et d'enlever le
bouton Fermer mais ça enlève le cadre et la bordure de titre aussi. Je veux
les conserver et je ne trouve pas sur ce site un exemple me permettant de
faire tout ce que je veux.

Alors, je veux avoir le cadrage standard et la barre de titre. Je veux
qu'il n'y ait pas de bouton Fermer et je veux que la fenêtre ne bouge pas.

Pouvez-vous m'aider ?

De plus, j'aimerais comprendre comment fonctionne les appellations suivantes
:

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

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

Est-ce qu'il y a un site qui explique le fonctionnement de ces déclarations ?

Merci !





Avatar
michdenis
Bonjour

"Ça me donne toujours un UserForm sans bouton Fermer qui ne bouge pas et le
cadrage n'est plus là. Je suis avec Excel 2000. "

Ce n'était pas ta demande ???????????????????????????

Pour ce qui est du cadrage .... je ne sais pas à quoi tu fais référence !


Laurent Longre a un site internet ... tu vas sur le site de Misange, il est référencié.


Salutations!



"EG" a écrit dans le message de news:
Bonjour michdenis

Ça ne fonctionne pas.

Ça me donne toujours un UserForm sans bouton Fermer qui ne bouge pas et le
cadrage n'est plus là. Je suis avec Excel 2000.

Est ce que Laurent Longre au Michel Perron ont un site sur lequel je
pourrais poser ma question ou à tu une autre solution ?

As-tu le titre d'un bon volume API (en français) que je pourrais me procurer ?

Merci de ta collaboration !


Bonjour EG,

Voici ce que tu veux !!!

Pour les explications.... cela te prendrait un bon livre sur les API .... et cela dépasse le cadre des échanges de ce forum
!


Ce qui suit est une combinaison de procédures émises je pense par Laurent Longre et Michel Perron.

Déclaration des API dans le haut de ton formulaire (userform)
'-----------------------------------
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu&, ByVal nPosition&, ByVal wFlags&) As Long

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

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 Sub UserForm_Initialize()
Const MF_BYCOMMAND As Long = &H0&
Const SC_MOVE As Long = &HF010&
Dim hwnd As Long, hSysMenu As Long

hwnd = FindWindow(vbNullString, Me.Caption)
hSysMenu = GetSystemMenu(hwnd, False)
DeleteMenu hSysMenu, SC_MOVE, MF_BYCOMMAND
End Sub
'-----------------------------------
Private Sub UserForm_Activate()
Dim hwnd As Long, exLong As Long
hwnd = FindWindowA(vbNullString, Me.Caption)
exLong = GetWindowLongA(hwnd, -16)
If exLong And &H880000 Then
SetWindowLongA hwnd, -16, exLong And &HFF77FFFF
Me.Hide: Me.Show
End If
End Sub
'-----------------------------------


Salutations!



"EG" a écrit dans le message de news:
Bonjour,

J'avais fait une demande concernant le bouton Fermer qui vient
automatiquement avec le UserForm pour l'enlever. J'ai eu ma réponse. La
personne m'indiquait d'aller voir le site suivant :
http://www.excelabo.net/xl/userforms.php#croixuser

Avec le code trouver, j'ai été en mesure d'enlever le bouton mais ça
n'empêchait plus ma forme de bouger. Dans la même page web, j'ai trouvé un
endroit qui me permettait d'empêcher le UserForm de bouger et d'enlever le
bouton Fermer mais ça enlève le cadre et la bordure de titre aussi. Je veux
les conserver et je ne trouve pas sur ce site un exemple me permettant de
faire tout ce que je veux.

Alors, je veux avoir le cadrage standard et la barre de titre. Je veux
qu'il n'y ait pas de bouton Fermer et je veux que la fenêtre ne bouge pas.

Pouvez-vous m'aider ?

De plus, j'aimerais comprendre comment fonctionne les appellations suivantes
:

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

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

Est-ce qu'il y a un site qui explique le fonctionnement de ces déclarations ?

Merci !





Avatar
Michel Pierron
Bonsoir EG;
Private Declare Function FindWindowA& Lib "user32" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function GetSystemMenu& Lib "user32" _
(ByVal hWnd&, ByVal bRevert&)
Private Declare Function RemoveMenu& Lib "user32" _
(ByVal hMenu&, ByVal nPosition&, ByVal wFlags&)
Private Declare Function DrawMenuBar& Lib _
"user32" (ByVal hWnd&)

Private Sub UserForm_Initialize()
Dim hWnd&, hSysMenu&
hWnd = FindWindowA(vbNullString, Me.Caption)
hSysMenu = GetSystemMenu(hWnd, 0)
RemoveMenu hSysMenu, &HF060, 0
RemoveMenu hSysMenu, &HF010, 0
DrawMenuBar hWnd
End Sub

MP

"EG" a écrit dans le message de
news:
Bonjour,

J'avais fait une demande concernant le bouton Fermer qui vient
automatiquement avec le UserForm pour l'enlever. J'ai eu ma réponse. La
personne m'indiquait d'aller voir le site suivant :
http://www.excelabo.net/xl/userforms.php#croixuser

Avec le code trouver, j'ai été en mesure d'enlever le bouton mais ça
n'empêchait plus ma forme de bouger. Dans la même page web, j'ai trouvé
un

endroit qui me permettait d'empêcher le UserForm de bouger et d'enlever le
bouton Fermer mais ça enlève le cadre et la bordure de titre aussi. Je
veux

les conserver et je ne trouve pas sur ce site un exemple me permettant de
faire tout ce que je veux.

Alors, je veux avoir le cadrage standard et la barre de titre. Je veux
qu'il n'y ait pas de bouton Fermer et je veux que la fenêtre ne bouge pas.

Pouvez-vous m'aider ?

De plus, j'aimerais comprendre comment fonctionne les appellations
suivantes

:

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

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

Est-ce qu'il y a un site qui explique le fonctionnement de ces
déclarations ?


Merci !