Symbôle Réduire dans un Userform
thesentry Messages postés 1092 Statut Membre -
J'aimerais avoir la possibilité de réduire un userform en cours d'execution et qu'il reste dans la barre de tâches de Windows.
comment faire ?
J'ai trouvé ce code :
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_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub
Mais ça ne fonctionne pas.
Merci
10 réponses
Demande technique visant à réduire un UserForm en cours d'exécution tout en le maintenant affiché dans la barre des tâches Windows, via des appels Win32 dans VBA. Plusieurs intervenants proposent des appels FindWindowA, SetWindowLongA et des drapeaux d'exécution pour modifier le style de la fenêtre, mais les résultats restent inconstants selon la configuration Windows XP et l'environnement. Réponses variées, certaines indiquent que le code ramène la fenêtre au bas de l'écran plutôt que dans la barre de tâches, tandis que d'autres suggèrent de fournir un fichier complet pour débogage. En pratique, plusieurs répondants conviennent que ce rétrécissement ne réalise pas l’objectif et proposent plutôt des approches alternatives, ou le partage d’un fichier corrigé pour débogage à distance.
-
Rassure nous, le fichier que t'a transmis f894009 fonctionne sur ta machine. Si ce n'est pas le cas il y a un autre problème. Tous les fichiers que nous t'avons transmis fonctionnent tel quel sans aucune modification!
-
Bonjour,
Ce code marche tres bien, mais il a pour but de reduire une UF en bas a gauche de l'ecran, pas de mettre l'UF reduite dans la barre de tache -
Bonjour,
Merci pour votre réponse. Mais cela ne me dit pas comment je peux parvenir à mes fins.
De plus, lorsqu'un utilisateur lance Excel, l'userform s'exécute automatiquement. Mais il n'apparaît pas dans la barre des tâches. Comment faire ?
Merci -
Bonjour,
Voir exemple ici:
http://www.cjoint.com/data3/3EvnSvuUsi3.htm
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ce ne sera pas dans la barre de tâche mais en bas à gauche:
Mettre dans ThisWorkBook:
Option Explicit Private Sub Workbook_Open() UserForm1.Show vbModeless Application.Visible = False 'rendre Excel invisible End Sub
et dans l'UserForm:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Application.Visible = True 'rendre Excel invisible End Sub
-
Cela fonctionne chez moi.
Par contre chez une erreur sur cette ligne à la fermeture:
SetWindowLong HandleUF, GWL_WNDPROC, BaseUFProc
-
-
Re bonjour a vous deux,
GWL_WNDPROC est une constante qui doit etre egale a -4
a voir: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlonga?redirectedfrom=MSDN
BaseUFProc: c'est un machin dont le code VBA de definition manque , mais cette ligne ne vous sert a rien puisque vous fermez l'application excel -
-
-
Bonjour,
un fichier avec votre code modifie (mise en commentaire de ce qui ne sert a rien): https://www.cjoint.com/?DEConNul5g8 -
Bien sur que c'est un souci. Mais sans code comment veux tu que l'on t'aide!!!!!!!!!!!!!
-
Bonjour a vous deux,
Thesentry: si votre UF ne se "lance" pas parce que vous avez supprime des donnees, aucune importance, comme l'a ecrit cs_le pivert, il nous faut votre code complet sans donnees -
Bonjour,
Je ne peux pas vous fournir le code. Laissez tomber donc.
Merci de votre aide.
TS