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

10 réponses

1 2
Avatar
michdenis
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
isabelle
bonjour José,

un exemple ici utilisant les api,
http://www.vbforums.com/showthread.php?tX8169

isabelle

Le 2010-12-20 10:40, Alfred WALLACE a écrit :
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,
j'arrive deja à mettre mon userform en "premier plan".

Mon soucis, est que, lorsque l'utilisateur change d'instance de excel,
ce userform perd sa propriété "premier plan".

j'aimerai lui redonner la propriété "premier plan" depuis une autre
subroutine
en particulier celle lancée par un ontime.

merci pour ton aide.

José


On 20 déc, 17:18, isabelle wrote:
bonjour Jos ,

un exemple ici utilisant les api,http://www.vbforums.com/showthread.php?t X8169

isabelle

Le 2010-12-20 10:40, Alfred WALLACE a crit :

> 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
isabelle
j'ai testé ce code et cela fonctionne bien,

sur la page module,

Sub Macro1()
UserForm1.Show 0
End Sub

sur la page 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()
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0, 3
End Sub


isabelle



Le 2010-12-20 11:57, Alfred WALLACE a écrit :
Bonjour Isabelle,
j'arrive deja à mettre mon userform en "premier plan".

Mon soucis, est que, lorsque l'utilisateur change d'instance de excel,
ce userform perd sa propriété "premier plan".

j'aimerai lui redonner la propriété "premier plan" depuis une autre
subroutine
en particulier celle lancée par un ontime.

merci pour ton aide.

José


On 20 déc, 17:18, isabelle wrote:
bonjour Jos ,

un exemple ici utilisant les api,http://www.vbforums.com/showthread.php?tX8169

isabelle

Le 2010-12-20 10:40, Alfred WALLACE a crit :

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,
merci pour ton code, j'arrive à faire
ceci (grace à ton aide et à celle d'autres personnes ici)

Cependant, ton exemple m'aide à préciser le soucis.

en effet, ce userform est bien devant toutes les fenêtres (powerpoint,
video, pdf, etc ...)
c'est super ..... mais,

le problème est le suivant :

si j'ouvre un second fichier excel, et que je reduis la feuille
ouverte, mon userform va se retrouver
réduit aussi !

il faudrait que, toutes les autres instances de feuilles excel
ouvertes soient "indépendantes" de
la première instance qui lance la macro du userform.

c'est un peu confu comme explications, j'espère que je ne suis pas
trop brouillon.

Merci encore

José










On 20 déc, 18:22, isabelle wrote:
j'ai testé ce code et cela fonctionne bien,

sur la page module,

Sub Macro1()
UserForm1.Show 0
End Sub

sur la page 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()
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0, 3
End Sub

isabelle

Le 2010-12-20 11:57, Alfred WALLACE a écrit :

> Bonjour Isabelle,
> j'arrive deja à mettre mon userform en "premier plan".

> Mon soucis, est que, lorsque l'utilisateur change d'instance de excel,
> ce userform perd sa propriété "premier plan".

> j'aimerai lui redonner la propriété "premier plan" depuis une autre
> subroutine
> en particulier celle lancée par un ontime.

> merci pour ton aide.

> José

> On 20 déc, 17:18, isabelle  wrote:
>> bonjour Jos ,

>> un exemple ici utilisant les api,http://www.vbforums.com/showthread.ph p?tX8169

>> isabelle

>> Le 2010-12-20 10:40, Alfred WALLACE a crit :

>>> 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
LSteph
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
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
Merci à MichD et à LSteph de vous être penché sur la sémantique d e 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" lorsqu e
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
isabelle
bonjour José,

je ne voie pas de solution autre que de désactiver le bouton réduire
http://www.excelabo.net/trucs/desactiver_icones_application

et de réduire l'application par macro,

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


isabelle



Le 2010-12-21 04:22, Alfred WALLACE a écrit :
bonjour Isabelle,
merci pour ton code, j'arrive à faire
ceci (grace à ton aide et à celle d'autres personnes ici)

Cependant, ton exemple m'aide à préciser le soucis.

en effet, ce userform est bien devant toutes les fenêtres (powerpoint,
video, pdf, etc ...)
c'est super ..... mais,

le problème est le suivant :

si j'ouvre un second fichier excel, et que je reduis la feuille
ouverte, mon userform va se retrouver
réduit aussi !

il faudrait que, toutes les autres instances de feuilles excel
ouvertes soient "indépendantes" de
la première instance qui lance la macro du userform.

c'est un peu confu comme explications, j'espère que je ne suis pas
trop brouillon.

Merci encore

José










On 20 déc, 18:22, isabelle wrote:
j'ai testé ce code et cela fonctionne bien,

sur la page module,

Sub Macro1()
UserForm1.Show 0
End Sub

sur la page 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()
SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0, 3
End Sub

isabelle

Le 2010-12-20 11:57, Alfred WALLACE a écrit :

Bonjour Isabelle,
j'arrive deja à mettre mon userform en "premier plan".



Mon soucis, est que, lorsque l'utilisateur change d'instance de excel,
ce userform perd sa propriété "premier plan".



j'aimerai lui redonner la propriété "premier plan" depuis une autre
subroutine
en particulier celle lancée par un ontime.



merci pour ton aide.



José



On 20 déc, 17:18, isabelle wrote:
bonjour Jos ,





un exemple ici utilisant les api,http://www.vbforums.com/showthread.php?tX8169





isabelle





Le 2010-12-20 10:40, Alfred WALLACE a crit :





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
LSteph
Bonsoir,

Une idée seulement, en lisant cela
il faudrait que, toutes les autres instances de feuilles excel
ouvertes soient "indépendantes" de



si tu faisais l'inverse avec un createobject dans le thisworkbook
creer une instance excel à part pour ce classeur à son ouverture
avec son userform
cf ici exemple de PMO
http://www.excel-downloads.com/forum/145236-mon-fichier-tout-seul-dans-sa-f enetre-excel.html

Idée seulement car pour l'instant je vois pas totalement l'objectif du
but de la manoeuvre ni dans quelle mesure on veut continuer à voir ce
userform au premier plan en laissant une relative liberté à
l'utilisateur d'ouvrir d'autres fenêtres qui vraisemblablement
resteront innaccessible à ce qui se passe dans celle du userform. .

--
LSteph


On 21 déc, 10:22, Alfred WALLACE wrote:
bonjour Isabelle,
merci pour ton code, j'arrive à faire
ceci (grace à ton aide et à celle d'autres personnes ici)

Cependant, ton exemple m'aide à préciser le soucis.

en effet, ce userform est bien devant toutes les fenêtres (powerpoint,
video, pdf, etc ...)
c'est super ..... mais,

le problème est le suivant :

si j'ouvre un second fichier excel, et que je reduis la feuille
ouverte, mon userform va se retrouver
réduit aussi !

il faudrait que, toutes les autres instances de feuilles excel
ouvertes soient "indépendantes" de
la première instance qui lance la macro du userform.

c'est un peu confu comme explications, j'espère que je ne suis pas
trop brouillon.

Merci encore

José

On 20 déc, 18:22, isabelle wrote:



> j'ai testé ce code et cela fonctionne bien,

> sur la page module,

> Sub Macro1()
> UserForm1.Show 0
> End Sub

> sur la page 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()
> SetWindowPos FindWindowA("ThunderDFrame", Me.Caption), -1, 0, 0, 0, 0, 3
> End Sub

> isabelle

> Le 2010-12-20 11:57, Alfred WALLACE a écrit :

> > Bonjour Isabelle,
> > j'arrive deja à mettre mon userform en "premier plan".

> > Mon soucis, est que, lorsque l'utilisateur change d'instance de excel ,
> > ce userform perd sa propriété "premier plan".

> > j'aimerai lui redonner la propriété "premier plan" depuis une aut re
> > subroutine
> > en particulier celle lancée par un ontime.

> > merci pour ton aide.

> > José

> > On 20 déc, 17:18, isabelle  wrote:
> >> bonjour Jos ,

> >> un exemple ici utilisant les api,http://www.vbforums.com/showthread. php?tX8169

> >> isabelle

> >> Le 2010-12-20 10:40, Alfred WALLACE a crit :

> >>> 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- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -
1 2