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

rendre la main à un userform

7 réponses
Avatar
Keita
Bonjour =E0 tous,
j'en appelle =E0 votre contribution car je n'ai toujours=20
pas resolu mon probleme (Voir "redonner la main =E0 un=20
userform" du 06 oct 2004 .
J'ai esper=E9 que CAP2 me propose une solution car il s'y=20
etait interess=E9 mais je nai plus de ses nouvelles.

Voici mon appel du 06 :
------------------------------------------------------
sur un usf j'ai une barre de menu faite de labels qui=20
ouvrent des menu contextuels ( comme ceux des click=20
droit) au passage de lasouris,par des mouse=20
move,exactement comme dans la barre de menu de la fenetre=20
de l'editeur VBA.

Le probleme c'est que =E7a marche sur un premier label et=20
une fois que le menu correspondant s'est ouvert les=20
autres labels ne repondent plus au mouse_move pour ouvrie=20
les menus.

Alors que faire ?
--------------------------------------------------------

Merci =E0 ceux qui peuvent m'aider.

7 réponses

Avatar
Vincent
Bonjour Keita
De quoi sont fait tes "menus contextuelles" sont-ce des userforms aussi ?
Vincent

"Keita" a écrit dans le message de
news:224601c4aebb$3fafcde0$
Bonjour à tous,
j'en appelle à votre contribution car je n'ai toujours
pas resolu mon probleme (Voir "redonner la main à un
userform" du 06 oct 2004 .
J'ai esperé que CAP2 me propose une solution car il s'y
etait interessé mais je nai plus de ses nouvelles.

Voici mon appel du 06 :
------------------------------------------------------
sur un usf j'ai une barre de menu faite de labels qui
ouvrent des menu contextuels ( comme ceux des click
droit) au passage de lasouris,par des mouse
move,exactement comme dans la barre de menu de la fenetre
de l'editeur VBA.

Le probleme c'est que ça marche sur un premier label et
une fois que le menu correspondant s'est ouvert les
autres labels ne repondent plus au mouse_move pour ouvrie
les menus.

Alors que faire ?
--------------------------------------------------------

Merci à ceux qui peuvent m'aider.
Avatar
keita
salut... et merci
t'ai envoyé fich. ( 64ko ) dans bal
merci encore
Avatar
Vincent
Bonsoir Keita
Désolé, ce n'est pas une adresse valide à cause du Spam
Si tu peux me dire s'il sagit de userform qui se lancent
après être passé sur les labels ?
Vincent

"keita" a écrit dans le message de
news:154c01c4aed9$94491410$
salut... et merci
t'ai envoyé fich. ( 64ko ) dans bal
merci encore
Avatar
Michel Pierron
Bonsoir Keita;
AMHA, ton problème est sans solution. Quand tu affiches un popup au passage
de la souris sur un label, le parent du popup affiché n'est ni le label ni
même l'userform, mais l'application elle même. De ce fait, lorsqu'un popup
est affiché, hormis un clic ou une action clavier (Esc ou Alt par exemple),
tout déplacement du curseur sur l'userform ou l'un de ses contrôles ne
déclenche pas le message attendu par l'application pour masquer le popup et
il n'existe pas de procédure évènementielle accessible à l'utilisateur pour
gérer ce message. Ce message est généré par une action telle qu'un clic en
n'importe quel endroit de la fenêtre de l'application et renvoyé à
l'application au travers d'une méthode de subclassing. Tu peux bien sur
simuler un clic à l'aide d'un pseudo évènement avec une fonction API
SendInput ou keyb_event ou encore mouse_event mais comme l'identification du
message envoyé ne correspondra pas à celui défini dans le subclassing, le
popup va être masqué par le pseudo évènement, puis immédiatement réaffiché
par l'application qui déjoue le leurre. Cela va provoquer un phénomène de
relaxation à la manière d'un oscillateur (flip-flop) que l'on appelle
couramment flicker.
Je ne vois pas en quoi le fait qu'un menu popup ne s'affiche que lorsque tu
cliques sur un label soit rédhibitoire pour toi. Pour afficher un menu
contextuel de la barre d'Excel, il faut bien préalablement cliquer sur
celui-ci non ?

MP

"Keita" a écrit dans le message de
news:224601c4aebb$3fafcde0$
Bonjour à tous,
j'en appelle à votre contribution car je n'ai toujours
pas resolu mon probleme (Voir "redonner la main à un
userform" du 06 oct 2004 .
J'ai esperé que CAP2 me propose une solution car il s'y
etait interessé mais je nai plus de ses nouvelles.

Voici mon appel du 06 :
------------------------------------------------------
sur un usf j'ai une barre de menu faite de labels qui
ouvrent des menu contextuels ( comme ceux des click
droit) au passage de lasouris,par des mouse
move,exactement comme dans la barre de menu de la fenetre
de l'editeur VBA.

Le probleme c'est que ça marche sur un premier label et
une fois que le menu correspondant s'est ouvert les
autres labels ne repondent plus au mouse_move pour ouvrie
les menus.

Alors que faire ?
--------------------------------------------------------

Merci à ceux qui peuvent m'aider.
Avatar
keita
bonsoir Vincent et Michel
merci de votre contribution.Pour repondre à Vincent :il
s'agit d'un menu creer avec:

Sub CreatePopUp(ByVal idx As Integer)
' CbPopUp() = niveaux d'imbrication
Dim cb As CommandBar, CbPopup(2) As CommandBarPopup
......ect

j'ai fait en sorte qu'il s'affiche dans un userform,au
lancement de celui çi.Il foctionne comme une barre de
menu.Sauf que pour des question de confort je voulais que
les menus se deroulent au passage de la souris ,sans
avoir à clicker à chaque fois sur l'intitulé du menu.

En gros voila mon pb.Mais je vais suivre le conseil de
Michel et me passer du confort.C'est dommage!

Je vous remercie encore et si toute fois qq trouve une
sol je suis preneur.
Keita
Avatar
CAP2
Salut Keita,

excuse-moi de t'avoir laissé tomber, mais le Week-end, je vais pas suur le
forum...

J'ai peut-être un semblant de réponse :
Comme l'a dit Michel en utilisant test popups, ça va être très dur...
En revanche, si au lieu d'afficher des popups, ce sont des Userforms qui
s'affichent, ça pourra peut être aller :

Tu as ton Userform dans lequel tes labels sont mis (appelons-le Accueil)
Tu as donc par exemple 3 labels dessus.
Tu crées donc 3 userforms (sur mon exemple, test1, test2 et test3) dans
lequelles tu mets ce que tu voulais faire apparaître dans tes popups...

Ensuite, tu crées par exemple un Command Button sur une feuille de calcul,
et tu lui affectes ce code :

Private Sub CommandButton1_Click()
Accueil.Show 0
End Sub


Le 0 dit que Accueil ne sera pas modale...

Ensuite sur chaque label de Accueil tu mets ce code :

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Test1.Show 0
End Sub

Private Sub Label2_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Test2.Show 0
End Sub

Private Sub Label3_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
Test3.Show 0
End Sub

Ensuite, tu vas dans ta feuille de calcul, tu cliques sur ton commandbutton,
il doit t'afficher Accueil non modale et, en passant sur tes labels, tu dois
passer d'une userform à une autre à volonté...

Seul bémol, chaque passage sur un autre label ne ferme pas la userform
précédemment affichée. Tu peux donc adapter un peu...

Voilà Keita, j'espère que tu pourras en faire quelquechose.
Chez moi, ça marche nickel (excel 2000)...

Tiens-moi au courant

CAP2
Avatar
keita
Bjrs ,
Ok je vais essayer
A+ Serai indispo pendant2 jours