Bonjour, voilà le problème est simple, je voudrais pouvoir minimiser la fenêtre de mon userform afin que mes résultats placés sur une feuille excel soient visibles et que l'utilisateur puisse revenir à la fenêtre de l'userform.
Merci par avance
Version imprimable
Bonjour, voilà le problème est simple, je voudrais pouvoir minimiser la fenêtre de mon userform afin que mes résultats placés sur une feuille excel soient visibles et que l'utilisateur puisse revenir à la fenêtre de l'userform.
Merci par avance
Comme il existe plusieurs possibilités... Les utilisateurs doivent-ils pouvoir modifier la/les feuilles de calculs ?
oui, les utilisateurs pourront modifier la feuille mais ce n'est pas une obligation
Bonjour,
regarde cette discussion, elle t'aidera surement ;)
http://www.developpez.net/forums/sho...duire+userform
A+
Tu peux aussi masquer ton userform avec
un simple bouton dans l'userformCode:Me.Hide
Et sur la feuille de calculs un bouton (de la boîte à outils contrôles) permettant de l'afficher de nouveau sans perdre les données que l'userform contient.
C'est le plus simple mais bon, tu as un bouton dans la feuille.
Le code dans le click du bouton
La raison de la gestion d'erreur : Tu as une erreur si tu cliques sur le bouton sans être parvenu dans la feuille de calculs depuis l'userform.Code:
1
2
3
4
5 Private Sub CommandButton1_Click() On error goto fin:: Userform1.show fin:: End Sub
N'oublie pas de mettre la propriété ShowModal de l'userform à false ;)
Merci pour tout, je testerais tout ça demain
J'ai utilisé ce que alex.a m'a indiqué.
Ca fonctionne bien mais on ne peut rien faire sur la feuille excel, ni imprimer, ni se déplacer sur la feuille, y'a t-il une solution à cela ??
très juste :oops: désolé
Rajoute ça juste après ton code dans Private Sub UserForm_Initialize()
teste et dis moi ;)Code:
1
2
3
4
5
6
7 Application.ScreenUpdating = False For Each w In Application.Workbooks With ActiveWindow .WindowState = xlMinimized End With Next w Application.ScreenUpdating = True
A+
Là tu réduit la fenêtre application, pas l'userform. Et je crois bien avoir compris que unfcool veut le contraire :(
Me trompe-je ?
En effet, je veux que l'userform se réduise mais que une fois réduit, on est accès à une feuille excel
As-tu testé la solution que je t'ai proposée réponse 5.
Pour ce qui concerne le bouton, tu as plusieurs possibilités, soit dans la barre des tâches soit sur la feuille de calculs. Tu as encore une autre possibilité : pas de bouton mais une touche de fonction. Le pb est de la connaître une fois l'userform masqué...
C'est toi qui vois ;)
Je n'ai pas testé cela car je ne veux rien mettre sur ma feuille excel
bonjour
Tu places cette première procédure dans un module standard. Utilise cette macro pour lancer l'UserForm.
Code:
1
2
3
4
5 Option Explicit Sub LanceUSF() UserForm1.Show 0 End Sub
Dans le module objet du UserForm, tu places ce code:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Option Explicit Private Declare Function FindWindowA& Lib "User32" _ (ByVal lpClassName$, ByVal lpWindowName$) Private Declare Function EnableWindow& Lib "User32" _ (ByVal hWnd&, ByVal bEnable&) Private Declare Function GetWindowLongA& Lib "User32" _ (ByVal hWnd&, ByVal nIndex&) Private Declare Function SetWindowLongA& Lib "User32" _ (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) Private Sub UserForm_Initialize() Dim hWnd As Long hWnd = FindWindowA(vbNullString, Me.Caption) SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000 End Sub Private Sub UserForm_Activate() Dim hWnd As Long hWnd = FindWindowA("XLMAIN", Application.Caption) EnableWindow hWnd, 1 End Sub
Un bouton de réduction est ajouté à coté de la croix de fermeture. l'UserForm se réduira, en bas et à gauche de l'écran, lorsque tu cliqueras dessus.
bonne journée
michel
et juste avant,Citation:
Envoyé par unfcool
8OCitation:
Envoyé par Tu
PS - Merci pour ta solution, Michel, elle mérite d'être connue.
heu c'est quoi le problème ouskel'n'or ??? je me suis peut-être mal exprimé, en fait mon bouton d'userform ouvre une feuille excel avec des résultats, et je voudrais que l'utilisateur puisse consulter cette feuille, sans quitter l'application or là, je réduis l'userform, la page excel est donc visible mais on ne peut rien faire.
Et je ne veux pas créer de bouton sur cette feuille de résultat
Bonjour,
j'ai essayé ceci dans mon code au début
et dans UserForm_Initialize de mon formulaire:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 'Déclaration variables Dim hMenu As Long Dim hWnd As Long, Style As Long, Valeur As Long Dim XX As Long, Style2 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 As Long, ByVal nPosition As Long, ByVal _ wFlags As Long) As Long Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindowLong Lib "User32" Alias _ "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
j'ai eu le même problème des autres feuilles bloquéesCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 ' Composant UserForm Private Sub UserForm_Initialize() Dim hWnd As Long 'permet de minimiser la fenêtre hWnd = FindWindow(vbNullString, FenetreFMESUser.Caption) SetWindowLong hWnd, -16, &H84C80080 hWnd = FindWindow(vbNullString, FenetreFMESUser.Caption) Style = GetWindowLong(hWnd, -16) Valeur = &H20000 XX = Style Or Valeur Style2 = XX Style = IIf(Valeur = &HC00000, Style1, Style2) SetWindowLong hWnd, -16, Style GetSystemMenu hWnd, False End Sub
mais j'ai changé la déclaration des variables et ça marche.
A+