Avoir les bouton "réduire" et "agrandire" dans un form de VBA

jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007 - 7 juil. 2005 à 16:52
jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007 - 11 juil. 2005 à 12:01
Bonjour,
Tout est dit dans le sujet...
j'aimerai donc savoir comment on fait pour que lorsque l'on clic dessus cela agrandisse ou réduise la fenetre (la form)
rappel : je suis sous VBA

Merci

11 réponses

florantanplan Messages postés 76 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 8 septembre 2006
7 juil. 2005 à 16:55
Ba tu peux pas...
0
jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007
7 juil. 2005 à 17:05
Et bien d'ai un début de code qui permet de les avoir mais il faut passer par un API (mais je ne maitrise pas les API)
Je crois qu'il s'agit de "SetwidowSize" dans user32 ...
Je voudrai donc pouvoir mieux m'en servir de ces fameux boutons....
Merci d'avance
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
7 juil. 2005 à 17:52
? Je ne comprends pas ton problème...

Tu veux créer des boutons qui aient la même fonction que les boutons de la fenêtre?

Si ce n'est que ça, alors

Pour minimiser tu fais: Docmd.Minimize

Pour agrandir: Docmd.maximize
TBBUIM
0
CTAC Messages postés 133 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juin 2012 5
7 juil. 2005 à 18:33
Bonjour.
Ceci devrait convenir.

Dans un module :


Public Declare Function FindWindow& _
Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName$, ByVal lpWindowName$)


Public Declare Function GetWindowLong& _
Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd&, ByVal nIndex&)


Public Declare Function SetWindowLong& _
Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&)


Private Declare Function EnableWindow& _
Lib "user32" _
(ByVal hwnd&, ByVal fEnable&)


Private Declare Function CallWindowProc& _
Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc&, ByVal hwnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)


Public Const GWL_WNDPROC& -4&, WM_SYSCOMMAND& &H112&


Public BaseUFProc&, BaseXLProc&, AncState&


Function UFProc&(ByVal hwnd&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
Dim HwndXL&
Const SC_MINIMIZE& = &HF020&
If uMsg = WM_SYSCOMMAND Then
If wParam = (SC_MINIMIZE And &HFFF0&) Then
HwndXL = FindWindow("XLMAIN", Application.Caption)
EnableWindow HwndXL, True
UserForm1.Hide
AncState = Application.WindowState
Application.WindowState = xlMinimized
BaseXLProc = SetWindowLong(HwndXL, GWL_WNDPROC, AddressOf XLProc)
UFProc = 1&
Exit Function
End If
End If
UFProc = CallWindowProc(BaseUFProc, hwnd, uMsg, wParam, lParam)
End Function


Function XLProc&(ByVal hwnd&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
Const SC_MAXIMIZE& = &HF030&, _ SC_RESTORE& &HF120&, SC_CLOSE& &HF060&
If uMsg = WM_SYSCOMMAND Then If wParam (SC_MAXIMIZE And &HFFF0&) Or wParam (SC_RESTORE _
And &HFFF0&) Or wParam = SC_CLOSE Then
SetWindowLong hwnd, GWL_WNDPROC, BaseXLProc
Application.WindowState = AncState
UserForm1.Show
XLProc = 1&
Exit Function
End If
End If
XLProc = CallWindowProc(BaseXLProc, hwnd, uMsg, wParam, lParam)
End Function


Dans le module UserForm1 :


Private HandleUF&


Private Sub UserForm_Initialize()
Const WS_MAXIMIZEBOX& = &H10000, _ WS_MINIMIZEBOX& &H20000, GWL_STYLE& -16&
HandleUF = FindWindow(vbNullString, Me.Caption)
SetWindowLong HandleUF, GWL_STYLE, _
GetWindowLong(HandleUF, GWL_STYLE) Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX
BaseUFProc = SetWindowLong(HandleUF, GWL_WNDPROC, AddressOf UFProc)
End Sub


Private Sub UserForm_Terminate()
SetWindowLong HandleUF, GWL_WNDPROC, BaseUFProc
End Sub


ctac
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007
8 juil. 2005 à 08:20
Je crois que ctac à donné une réponse qui correspond à mes attentes : il me reste plus qu'à le tester...
Merci
Jyver
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
8 juil. 2005 à 11:11
lol alors je n'ai vraiment pas compris t'as question,

Serait-il possible que tu réexpliques plus en détail ce que tu veux
faire avec ce code, afin que cela serve à tout le monde et pas que à
toi. Merci de ta compréhension.
TBBUIM
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
8 juil. 2005 à 11:15
Parce que tel que c'est écrit dans le sujet...

Pour moi, en VBA
Tu fais un bouton et dans l'évènement clic du écris: Docmd.minimize

Et Maximize pour le bouton agrandir.

En VB, ya pas de DoCmd, donc peut être es-tu obligé d'écrire ce que CTAC a mis, mais pas en VBA sous ACCESS.

Donc soit tu n'as pas testé ce que j'ai écris, soit je n'ai pas compris
ton sujet, bien qu'il semble évident pour toi, auquel cas, je te serais
gré de bien vouloir expliquer en détail la finalité de ta question car
cela m'intéresse. Merci
TBBUIM
0
jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007
11 juil. 2005 à 08:35
Bonjour,

Dans un userform en VBA, il n'y a que le bouton de la croix "X" pour fermer la fenetre (fermer le userform). Je voudrais avoir les boutons agrandire (le carré) et réduire (le tiret) pour agrandire ou réduire mon userform.

j'espère que tu as compris le sens de ma question ;-) .
Jyver
0
jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007
11 juil. 2005 à 08:42
Précision : le Docmd.minimize ne marche pas chez moi. Je suis en VBA sous excel (mais il me semble que c'est le meme VBA sous Access que sous Excel)
Jyver
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
11 juil. 2005 à 09:20
Ok, c'est l'élément essentiel qu'il manquait à ta question.

Tu es sous EXCEL!

Ce que j'ai écris marche sous ACCESS...
TBBUIM
0
jyver Messages postés 46 Date d'inscription dimanche 5 juin 2005 Statut Membre Dernière intervention 10 juillet 2007
11 juil. 2005 à 12:01
Aurais-tu des infos complémentaires pour afficher ces fameux boutons?
Merci d'avance
Jyver
0