OVH Cloud OVH Cloud

ca marche pas

2 réponses
Avatar
seb
Salut a tous,

Je viens de me balader sur excelabo.net à la recherche de quelques
amélioration à apporter a mon appli. Et là bingo la fonction qui permet de
masquer la croix de fermeture et empeche l'utilisateur de déplacer le
Userform.

Je me dis chouet.

Mais ca marche pas.

J'ai modifier l'instruction pour ne l'ecrire qu'une seule fois et pouvoir
l'appeler depuis tout mes USF.

Voici la modif :
Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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

Sub SupprimerFermeture(USF As UserForm)
Dim hWnd As Long, exLong As Long
hWnd = FindWindowA(vbNullString, USF.Caption)
exLong = GetWindowLongA(hWnd, -16)
If exLong And &H880000 Then
SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
End If
End Sub

Le probleme c'est que j'arrive pas a rentrer dans la boucle if.

Si quelqu'un voit ce qui cloche ???????????????????

2 réponses

Avatar
Michel Pierron
Bonsoir Seb;
Je n'ai pas d'explication satisfaisante, mais je pense qu'il vaut mieux
passer le handle de la fenêtre comme paramètre à la procédure générale.

Module standard:
Declare Function FindWindowA& Lib "User32" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function SetWindowLongA& Lib "User32" _
(ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)

Sub SupprimerFermeture(ByVal hWnd&)
' &H84C00080 si déplacement souhaité
SetWindowLongA hWnd, -16, &H84400080
End Sub

Module UserForm:
Private Sub UserForm_Initialize()
SupprimerFermeture FindWindowA(vbNullString, Me.Caption)
End Sub

MP

"seb" a écrit dans le message de
news:%23tAwpN$
Salut a tous,

Je viens de me balader sur excelabo.net à la recherche de quelques
amélioration à apporter a mon appli. Et là bingo la fonction qui permet de
masquer la croix de fermeture et empeche l'utilisateur de déplacer le
Userform.

Je me dis chouet.

Mais ca marche pas.

J'ai modifier l'instruction pour ne l'ecrire qu'une seule fois et pouvoir
l'appeler depuis tout mes USF.

Voici la modif :
Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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

Sub SupprimerFermeture(USF As UserForm)
Dim hWnd As Long, exLong As Long
hWnd = FindWindowA(vbNullString, USF.Caption)
exLong = GetWindowLongA(hWnd, -16)
If exLong And &H880000 Then
SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
End If
End Sub

Le probleme c'est que j'arrive pas a rentrer dans la boucle if.

Si quelqu'un voit ce qui cloche ???????????????????




Avatar
lyssandre
Merci, Michel, maintenant ca marche.

"Michel Pierron" a écrit dans le message de news:

Bonsoir Seb;
Je n'ai pas d'explication satisfaisante, mais je pense qu'il vaut mieux
passer le handle de la fenêtre comme paramètre à la procédure générale.

Module standard:
Declare Function FindWindowA& Lib "User32" _
(ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function SetWindowLongA& Lib "User32" _
(ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)

Sub SupprimerFermeture(ByVal hWnd&)
' &H84C00080 si déplacement souhaité
SetWindowLongA hWnd, -16, &H84400080
End Sub

Module UserForm:
Private Sub UserForm_Initialize()
SupprimerFermeture FindWindowA(vbNullString, Me.Caption)
End Sub

MP

"seb" a écrit dans le message de
news:%23tAwpN$
Salut a tous,

Je viens de me balader sur excelabo.net à la recherche de quelques
amélioration à apporter a mon appli. Et là bingo la fonction qui permet
de


masquer la croix de fermeture et empeche l'utilisateur de déplacer le
Userform.

Je me dis chouet.

Mais ca marche pas.

J'ai modifier l'instruction pour ne l'ecrire qu'une seule fois et
pouvoir


l'appeler depuis tout mes USF.

Voici la modif :
Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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

Sub SupprimerFermeture(USF As UserForm)
Dim hWnd As Long, exLong As Long
hWnd = FindWindowA(vbNullString, USF.Caption)
exLong = GetWindowLongA(hWnd, -16)
If exLong And &H880000 Then
SetWindowLongA hWnd, -16, exLong And &HFF77FFFF
End If
End Sub

Le probleme c'est que j'arrive pas a rentrer dans la boucle if.

Si quelqu'un voit ce qui cloche ???????????????????