Faire en sorte qu'un POPUP soit toujours collé au bouton qui l'appelle

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Je me heurte à un problème de POPUP récalcitrant qui apparaît quand on clique sur un Bouton ActiveX qui l'appelle. Je voudrais que, quelle que soit la configuration de ma feuille (Plein Écran ou Vue Normale) que ce POPUP, quand il apparaît, soit toujours collé au bouton qui déclenche son apparition, et non qu'il soit dans un endroit insolite de l'écran.

Ci-joint un exemple + explications détaillées du problème.

Merci d'avance pour toute solution.

Bonne fin d'après-midi septentrionale.
 

Pièces jointes

Re : Faire en sorte qu'un POPUP soit toujours collé au bouton qui l'appelle

Bonsoir Magic,

c'est ici que ça se passe
Code:
Private Sub BoutonChxFeuille2_Click()
    'Coordonnées "statiques" du "POPUP"
    Call Menu([COLOR="Blue"][B]0, 0[/B][/COLOR])
End Sub
à toi d'adapter le données en bleu
il te faudra tester si tu es en mode plein écran ou normal et
évaluer à chaque fois la position du popup en fonction de la position du lieu ou tu cliques pour l'appeler
à+
Philippe
 
Re : Faire en sorte qu'un POPUP soit toujours collé au bouton qui l'appelle

Merci phlaurent55 pour ta réponse, mais c'est exactement ce que j'avais fait, seulement uniquement dans la 3ème feuille.
Il semblerait que ce ne soit pas si facile (ou peut-être impossible) de maintenir 2 objets côte à côte quelles que soient les circonstances.
 
Re : Faire en sorte qu'un POPUP soit toujours collé au bouton qui l'appelle

Muchas gracias Hasco !

Alors là BRAVO, chapeau bas, etc.

Comme on dirait ici "¡que lo pario!" ("¡caramba!" c'est plus au nord...) ou "putain" dans mon cher midi.

N'obtenant pas de réponse sur ce décidément incomparable forum (de très loin le meilleur, allez faire un tour ailleurs et vous comprendrez...), têtu, je suis allé voir quand même un peu chez les autres (même chez les "étrangers" !!), sait-on jamais... J'ai eu des tentatives de solutions disons rocambolesques et d'une complexité quasi quantique, ou alors des réponses autant scientifiques que péremptoires du style "c'est pas possible !!!".
Je me doutais bien que du côté des API il devait y avoir quelque solution, mais ces fameuses (ou fameux...???) API dépassent largement mes compétences.

M'étant résigné à abandonner définitivement la solution des POPUP, j'avais "bidouillé" une solution au moyen de listes déroulantes. Ça marche, mais c'est un peu "lent" et nettement plus lourd que la solution des POPUP qui en un tournemain règlent le problème. Mais je pense qu'il doit y avoir un moyen nettement plus élégant pour y remédier (voir macro à ce sujet).

Un forum sert à poser des questions, et quand un problème a été par bonheur résolu autant alors partager avec ceux à qui ça pourrait intéresser la solution.

Muchísimas gracias, job75, JPN & Hasco.
 

Pièces jointes

Re : Faire en sorte qu'un POPUP soit toujours collé au bouton qui l'appelle

Bonjour,

C'est presque parfait, à un détail près.
Pour une vue déterminée de l'écran (par ex. un zoom à 100%) le POPUP (pour lequel on aura auparavant régler les coordonnées pour cette configuration dans la routine de Hasco) reste bien solidaire de son bouton d'appel que l'on soit en Plein Écran ou en Vue Normale.
Mais voilà, si l'on fait un zoom (crescendo ou decrescendo) au moyen de CTRL + molette de la souris, le POPUP va toujours apparaître sur l'écran à la même position que précédemment, alors que son bouton d'appel, lui, aura changé de position sur l'écran, et dans ce cas bouton ActiveX et POPUP ne seront plus "collés".
Peut-on paramétrer les coordonnées du POPUP en fonction du zoom ?
 
Re : Faire en sorte qu'un POPUP soit toujours collé au bouton qui l'appelle

Bonjour Magic_Doctor,

Code:
Sub Menu(bouton As Object)
    Dim px, py, x, y, zm
    [SIZE=3][B]zm = ActiveWindow.Zoom / 100[/B][/SIZE]
    px = (GetDeviceCaps(GetDC(0), 88) / 66)
    py = (GetDeviceCaps(GetDC(0), 90) / 50)
    x = (ActiveWindow.PointsToScreenPixelsX(bouton.Left * px * [B][SIZE=3]zm[/SIZE][/B])) + (bouton.Width * [SIZE=3][B]zm[/B][/SIZE])
    y = (ActiveWindow.PointsToScreenPixelsY(bouton.Top * py * [B][SIZE=3]zm[/SIZE][/B])) + (bouton.Height * [B][SIZE=3]zm[/SIZE][/B])
    Application.CommandBars("Workbook tabs").ShowPopup x, y
End Sub


Mais tu aurais pu le trouver tout seul.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour