Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

connaitre si un userform est "topmost"depuis un module standard ?

14 réponses
Avatar
Alfred WALLACE
Bonjour, et j'esp=E8re que vous
n'=EAtes pas trop sous la neige !


Puis je connaitre la position topmost d'un userform1
dans une subroutine d'un module standard ?

Et, si, il n'est pas topmost, comment lui redonner cette propri=E9t=E9
alors que je suis toujours dans la sub d'un module standard ?

Merci pour votre aide.

Jos=E9

4 réponses

1 2
Avatar
michdenis
Voici un exemple : http://cjoint.com/?0mvtJcQnH5Q


MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Merci à MichD et à LSteph de vous être penché sur la sémantique de mon
message ....
Mais, je n'arrive pas à empecher que la fenetre du userform se
retrouve
réduite dans la barre des taches "avec" la fenetre du classeur
excel ....

comment disocier les deux ? voila ce que j'ai fait :
***dans le code du userform :
**********************************
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0,
3
End Sub

***dans le code d'un module1
**********************************
Sub Macro1()
UserForm1.Show vbModeless
' Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
<<<------- pour tester quelque chose qui remette la userform en avant
plan
End Sub


***dans le code d'un module2
**********************************
'In the userform's code or make Public and put in a Module
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function BringWindowToTop Lib "user32" _
(ByVal hWnd As Long) As Long

'In a Sub

Sub avant_plan()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", UserForm1.Caption)
If hWnd Then
'AppActivate UserForm1.Caption
'UserForm1.TextBox1.SetFocus
'UserForm1.Show
BringWindowToTop hWnd
End If
Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
End Sub



je pensais naivement que, une fois le usf ouvert, la procedure
"avant_plan" aller s'éxecuter
toutes les secondes pour ramener le usf devant toutes les fenetres ...

mais, non .... çà ne marche pas, la fenetre ne réaparait "que" lorsque
j'agrandi
la fenetre generale de excel ....

Merci de votre aide.

José






On 21 déc, 14:16, "michdenis" wrote:
Merci.

| a priori "the most top" le plus au dessus

la lecture du commentaire qu'il a fait la r ponse d'Isabelle,
il a d fini sa probl matique et ce que je demandais !

MichD
--------------------------------------------
"LSteph" a crit dans le message de groupe de discussion :


bonjour,

a priori "the most top" le plus au dessus (not very fine translation
because my taylor was rich but became poor and lonesome) mais qui
doit tre "au premier plan"

Cordialement.

--
LSteph

On 20 d c, 16:56, "michdenis" wrote:

> Bonjour,

> Quelle est la d finition de ton expression : "topmost" ?

> MichD
> --------------------------------------------
> "Alfred WALLACE" a crit dans le message de groupe de discussion :
>

> Bonjour, et j'esp re que vous
> n' tes pas trop sous la neige !

> Puis je connaitre la position topmost d'un userform1
> dans une subroutine d'un module standard ?

> Et, si, il n'est pas topmost, comment lui redonner cette propri t
> alors que je suis toujours dans la sub d'un module standard ?

> Merci pour votre aide.

> Jos
Avatar
michdenis
J'oubliais,

Tu pourrais inhiber le bouton "minimisation" de l'application Excel
et ajouter un bouton sur une barre d'outils ou sur ton formulaire
pour minimiser Excel. Cela empêcherait de faire rouler en arrière-plan
une procédure "OnTime" durant tout le temps que le formulaire soit ouvert.

MichD
--------------------------------------------
"michdenis" a écrit dans le message de groupe de discussion : ieqs1c$no2$

Voici un exemple : http://cjoint.com/?0mvtJcQnH5Q


MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Merci à MichD et à LSteph de vous être penché sur la sémantique de mon
message ....
Mais, je n'arrive pas à empecher que la fenetre du userform se
retrouve
réduite dans la barre des taches "avec" la fenetre du classeur
excel ....

comment disocier les deux ? voila ce que j'ai fait :
***dans le code du userform :
**********************************
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0,
3
End Sub

***dans le code d'un module1
**********************************
Sub Macro1()
UserForm1.Show vbModeless
' Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
<<<------- pour tester quelque chose qui remette la userform en avant
plan
End Sub


***dans le code d'un module2
**********************************
'In the userform's code or make Public and put in a Module
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function BringWindowToTop Lib "user32" _
(ByVal hWnd As Long) As Long

'In a Sub

Sub avant_plan()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", UserForm1.Caption)
If hWnd Then
'AppActivate UserForm1.Caption
'UserForm1.TextBox1.SetFocus
'UserForm1.Show
BringWindowToTop hWnd
End If
Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
End Sub



je pensais naivement que, une fois le usf ouvert, la procedure
"avant_plan" aller s'éxecuter
toutes les secondes pour ramener le usf devant toutes les fenetres ...

mais, non .... çà ne marche pas, la fenetre ne réaparait "que" lorsque
j'agrandi
la fenetre generale de excel ....

Merci de votre aide.

José






On 21 déc, 14:16, "michdenis" wrote:
Merci.

| a priori "the most top" le plus au dessus

la lecture du commentaire qu'il a fait la r ponse d'Isabelle,
il a d fini sa probl matique et ce que je demandais !

MichD
--------------------------------------------
"LSteph" a crit dans le message de groupe de discussion :


bonjour,

a priori "the most top" le plus au dessus (not very fine translation
because my taylor was rich but became poor and lonesome) mais qui
doit tre "au premier plan"

Cordialement.

--
LSteph

On 20 d c, 16:56, "michdenis" wrote:

> Bonjour,

> Quelle est la d finition de ton expression : "topmost" ?

> MichD
> --------------------------------------------
> "Alfred WALLACE" a crit dans le message de groupe de discussion :
>

> Bonjour, et j'esp re que vous
> n' tes pas trop sous la neige !

> Puis je connaitre la position topmost d'un userform1
> dans une subroutine d'un module standard ?

> Et, si, il n'est pas topmost, comment lui redonner cette propri t
> alors que je suis toujours dans la sub d'un module standard ?

> Merci pour votre aide.

> Jos
Avatar
Alfred WALLACE
Bonjour à Isabelle, MichD et LSteph !

Ben, en fin de compte, j'ai rajouter un tit bouton sur mon userform
qui permet de minimiser la feuille excel, et de lui ré-attribuer
la propriété "topmost" (lol)....

En attendant les prochaines aventures je vous remercie
du coup de main !

cordialement et bonnes fêtes !

José



On 21 déc, 19:39, "michdenis" wrote:
J'oubliais,

Tu pourrais inhiber le bouton "minimisation" de l'application Excel
et ajouter un bouton sur une barre d'outils ou sur ton formulaire
pour minimiser Excel. Cela emp�cherait de faire rouler en arriï ¿½re-plan
une proc�dure "OnTime" durant tout le temps que le formulaire soi t ouvert.

MichD
--------------------------------------------
"michdenis"  a �crit dans le message de groupe de discussion : ieqs1c$

Voici un exemple :    http://cjoint.com/?0mvtJcQnH5Q

MichD
--------------------------------------------
"Alfred WALLACE"  a �crit dans le message de groupe de discussi on :


Merci � MichD et � LSteph de vous �tre penchï ¿½ sur la s�mantique de mon
message ....
Mais, je n'arrive pas � empecher que la fenetre du userform se
retrouve
r�duite dans la barre des taches "avec" la fenetre du classeur
excel ....

comment disocier les deux ? voila ce que j'ai fait :
***dans le code du userform :
**********************************
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0,
3
End Sub

***dans le code d'un module1
**********************************
Sub Macro1()
UserForm1.Show vbModeless
' Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
<<<------- pour tester quelque chose qui remette la userform en avant
plan
End Sub

***dans le code d'un module2
**********************************
'In the userform's code or make Public and put in a Module
Public Declare Function FindWindow Lib "user32" _
  Alias "FindWindowA" (ByVal lpClassName As String, _
  ByVal lpWindowName As String) As Long

Private Declare Function BringWindowToTop Lib "user32" _
(ByVal hWnd As Long) As Long

'In a Sub

Sub avant_plan()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", UserForm1.Caption)
    If hWnd Then
          'AppActivate UserForm1.Caption
          'UserForm1.TextBox1.SetFocus
          'UserForm1.Show
          BringWindowToTop hWnd
    End If
    Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
End Sub

je pensais naivement que, une fois le usf ouvert, la procedure
"avant_plan" aller s'�xecuter
toutes les secondes pour ramener le usf devant toutes les fenetres ...

mais, non .... �� ne marche pas, la fenetre ne r� aparait "que" lorsque
j'agrandi
la fenetre generale de excel ....

Merci de votre aide.

Jos�

On 21 d�c, 14:16, "michdenis" wrote:

> Merci.

> | a priori "the most top" le plus au dessus

> la lecture du commentaire qu'il a fait la r ponse d'Isabelle,
> il a d fini sa probl matique et ce que je demandais !

> MichD
> --------------------------------------------
> "LSteph"  a crit dans le message de groupe de discussion :
>

> bonjour,

> a priori "the most top" le plus au dessus (not very fine translation
> because my taylor was rich but became poor and lonesome)  mais qui
> doit tre "au premier plan"

> Cordialement.

> --
> LSteph

> On 20 d c, 16:56, "michdenis" wrote:

> > Bonjour,

> > Quelle est la d finition de ton expression : "topmost" ?

> > MichD
> > --------------------------------------------
> > "Alfred WALLACE"  a crit dans le message de groupe de discussion :
> >

> > Bonjour, et j'esp re que vous
> > n' tes pas trop sous la neige !

> > Puis je connaitre la position topmost d'un userform1
> > dans une subroutine d'un module standard ?

> > Et, si, il n'est pas topmost, comment lui redonner cette propri t
> > alors que je suis toujours dans la sub d'un module standard ?

> > Merci pour votre aide.

> > Jos
Avatar
michdenis
| Ben, en fin de compte, j'ai rajouter un tit bouton sur mon userform
| qui permet de minimiser la feuille excel, et de lui ré-attribuer
| la propriété "topmost" (lol)....

Je n'ai vraiment rien compris à ta question, moi je pensais que c'était
la minimisation de la fenêtre de l'application Excel qui posait problème,
car cette action ne déclenche aucune procédure évènementielle...
Cependant, le fait de minimiser un classeur ne masque pas le formulaire
en avant plan si tu as utilisé les API pour le maintenir ainsi. Nul besoin
d'un bout de code additionnel.

Tant mieux si tu as une solution qui te convient !


MichD
--------------------------------------------
"Alfred WALLACE" a écrit dans le message de groupe de discussion :


Bonjour à Isabelle, MichD et LSteph !

Ben, en fin de compte, j'ai rajouter un tit bouton sur mon userform
qui permet de minimiser la feuille excel, et de lui ré-attribuer
la propriété "topmost" (lol)....

En attendant les prochaines aventures je vous remercie
du coup de main !

cordialement et bonnes fêtes !

José



On 21 déc, 19:39, "michdenis" wrote:
J'oubliais,

Tu pourrais inhiber le bouton "minimisation" de l'application Excel
et ajouter un bouton sur une barre d'outils ou sur ton formulaire
pour minimiser Excel. Cela emp�cherait de faire rouler en arri�re-plan
une proc�dure "OnTime" durant tout le temps que le formulaire soit ouvert.

MichD
--------------------------------------------
"michdenis" a �crit dans le message de groupe de discussion : ieqs1c$

Voici un exemple : http://cjoint.com/?0mvtJcQnH5Q

MichD
--------------------------------------------
"Alfred WALLACE" a �crit dans le message de groupe de discussion :


Merci � MichD et � LSteph de vous �tre pench� sur la s�mantique de mon
message ....
Mais, je n'arrive pas � empecher que la fenetre du userform se
retrouve
r�duite dans la barre des taches "avec" la fenetre du classeur
excel ....

comment disocier les deux ? voila ce que j'ai fait :
***dans le code du userform :
**********************************
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub UserForm_Initialize()
Application.WindowState = xlMinimized
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0,
3
End Sub

***dans le code d'un module1
**********************************
Sub Macro1()
UserForm1.Show vbModeless
' Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
<<<------- pour tester quelque chose qui remette la userform en avant
plan
End Sub

***dans le code d'un module2
**********************************
'In the userform's code or make Public and put in a Module
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Private Declare Function BringWindowToTop Lib "user32" _
(ByVal hWnd As Long) As Long

'In a Sub

Sub avant_plan()
Dim hWnd As Long
hWnd = FindWindow("ThunderDFrame", UserForm1.Caption)
If hWnd Then
'AppActivate UserForm1.Caption
'UserForm1.TextBox1.SetFocus
'UserForm1.Show
BringWindowToTop hWnd
End If
Application.OnTime Now + TimeValue("0:0:01"), "avant_plan"
End Sub

je pensais naivement que, une fois le usf ouvert, la procedure
"avant_plan" aller s'�xecuter
toutes les secondes pour ramener le usf devant toutes les fenetres ...

mais, non .... �� ne marche pas, la fenetre ne r�aparait "que" lorsque
j'agrandi
la fenetre generale de excel ....

Merci de votre aide.

Jos�

On 21 d�c, 14:16, "michdenis" wrote:

> Merci.

> | a priori "the most top" le plus au dessus

> la lecture du commentaire qu'il a fait la r ponse d'Isabelle,
> il a d fini sa probl matique et ce que je demandais !

> MichD
> --------------------------------------------
> "LSteph" a crit dans le message de groupe de discussion :
>

> bonjour,

> a priori "the most top" le plus au dessus (not very fine translation
> because my taylor was rich but became poor and lonesome) mais qui
> doit tre "au premier plan"

> Cordialement.

> --
> LSteph

> On 20 d c, 16:56, "michdenis" wrote:

> > Bonjour,

> > Quelle est la d finition de ton expression : "topmost" ?

> > MichD
> > --------------------------------------------
> > "Alfred WALLACE" a crit dans le message de groupe de discussion :
> >

> > Bonjour, et j'esp re que vous
> > n' tes pas trop sous la neige !

> > Puis je connaitre la position topmost d'un userform1
> > dans une subroutine d'un module standard ?

> > Et, si, il n'est pas topmost, comment lui redonner cette propri t
> > alors que je suis toujours dans la sub d'un module standard ?

> > Merci pour votre aide.

> > Jos
1 2