Garder une userform en premier plan

Signaler
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour, j'aimerais savoir si il est possible d'afficher une userform toujours au premier plan, car en fait je travaille sur deux feuilles excel, une depuis laquelle je lance une userform et je lance un processus qui tourne en continu et une autre feuille sur laquel je fais des calculs mais malheuresement quand je lance la userform sur la premiere et que je clique sur la deuxieme fenetre excel, celle-ci me recouvre la userform Comment la garder devant?

PS: je demande ca car je veux utiliser le plein ecran la deuxieme feuille donc pas de deux fenetre sur 1/2 ecran comme repons merci.....

@+

Je viens de découvrir le bonheur de programmer et le VB me le rend bien

5 réponses

Messages postés
4525
Date d'inscription
dimanche 29 septembre 2002
Statut
Modérateur
Dernière intervention
22 avril 2019
8
Une solution serait :

FindWindow + SetWindowPos

@+

E.B.
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

slt, est ce que tu aurais plus de precision sur la procedure FindWindow?

genre estce que je peu faire

finwindow(userform1 in toto.xls).......
Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
' déclarations :




Private Declare Function 
FindWindowA 
Lib 
"user32" 
_

  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private hwnd As Long

Private Sub UserForm_Initialize()

    hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
        "X", "D") & "Frame", Me.Caption)
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>
Messages postés
113
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
28 août 2007

Slt merci pour la réponse mais tu pourrais être un peu plus expicite sur le code????

Private Sub UserForm_Initialize()

    hwnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
        "X", "D") & "Frame", Me.Caption)
End Sub

de ce que je comprand quand l'userform s'initialise tu met quoi dans la variable hwnd ?


"thunder et le nop de la fenetre que tu cherche ou alors c'est la userform qui se trouve dans la variable hwnd???


Merci d'avance @+

Je viens de découvrir le bonheur de programmer et le VB me le rend bien
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
une classe de UserForm est de type
ThunderXFrame ou ThunderDFrame (selon version, d'où la fonction Iif afin de l'évaluer)
Bref, une fois déterminée (le nom de la classe du UserForm) il est passé en paramètre ainsi que le Caption du UserForm à la fonction api FindWindow, afin de retrouver le hWnd (handle windows, c'est un nombre attribué par windows à cette fenêtre afin de l'identifer)

Dans VB6, tu as la propriété hwnd de ta Form, mais pas en VBA, donc faut le faire soi même

@++

(