Microsoft 365 Forcer l'affichage de mon userform (barre de progression) sur l'écran où le classeur est actif (cas des doubles/triples écrans)

Le_Phénomène

XLDnaute Nouveau
Bonjour,

Dans l'un de mes projets, je fais afficher une barre de progression via un userform afin de faire "patienter" l'utilisateur (et histoire que ce dernier ne panique pas trop lors de traitements un peu longuais ;) - ça les rassure) :
1730798875040.png


Sauf que... selon les configurations des uns et des autres, de leur choix d'ouvrir/placer le classeur Excel sur tel ou tel écran (l'équipe dispose tous d'un double écran avec affichage étendu et certain utilise même leur laptop comme troisième écran), mon userform s'affiche toujours par défaut sur l'écran principal définit dans les paramètres Windows.

Donc pas de souci lorsque l'utilisateur à son classeur ouvert sur le moniteur déclaré comme écran principal mais c'est bof lorsqu'il a décidé de placer son classeur sur l'un des écrans secondaire.

Je souhaiterai donc pouvoir :
1- savoir sur quel écran est activé le classeur Excel qui mouline
2- forcer l'affichage de mon userform sur ledit écran

Si un éminant expert à une solution ou une voie sur laquelle je peux m'orienter, je l'en remercie par avance.

En vous souhaitant une bien agréable journée.
Franck
 
Solution
Salut les afficheurs de UserForms,

J'ai amélioré ma petite ressource de Barre de Progression Interruptible (sur option):
pour y ajouter:
- le centrage par défaut dans la fenêtre active
- la possibilité de la positionner Left et Top
- la possibilité de la dimensionner en Width et Height
- la possibilité de désigner la couleur de la barre
- la possibilité de supprimer le Caption (barre de menu système de la fenêtre)

Tous les paramètres sont modifiables en cours d'exécution (à chaque appel) de la barre.

En principe ça devrait convenir à @Le_Phénomène sans avoir à trop bricoler.

Je vous mets le fichier de la...

Dudu2

XLDnaute Barbatruc
A noter que si tu n'utilises pas le GetWindowLong, et que tu pars de WS_SYSTEMO = &H94C80080, ça sert à rien de faire un AND avec Not WS_CAPTION puisque c'est le C qu'il faut mettre à 0.

Un SetWindowLongPtr UserFormHandle, GWL_STYLE, &H94080080 suffit.
Comme quoi tu peux faire toujours plus court ! 😛
 

Statistiques des forums

Discussions
314 675
Messages
2 111 805
Membres
111 307
dernier inscrit
mpmp1