XL 2016 VBA - 2 écrans - Positionner un UserForm dans le même ou l'autre écran par rapport à Excel

Dudu2

XLDnaute Barbatruc
Bonjour à tous,

Si quelqu'un possède 2 moniteurs, j'aimerais qu'il prenne quelques minutes pour tester les 3 boutons de ce programme et vérifier si ça fait ce que ça dit ou si ça part en live complet !
En prenant la peine de positionner la fenêtre Excel une fois dans le Moniteur primaire et une fois dans le Moniteur secondaire.
1658178684681.png

Merci par avance.
 

Pièces jointes

  • VBA Multiple 2 Moniteurs Screens Écrans.xlsm
    35.4 KB · Affichages: 11
Solution
@TooFatBoy,
Super, je crois qu'on peut dire qu'on a réussi ! Et c'est tout sauf simple !
Je dis "on" parce que sans ta config complètement bizarre et ton assiduité aux tests, rien n'aurait été possible.
Merci pour ton aide. Je reposte le fichier ici pour faire de ce post la solution.

Je rappelle la partie utile du bidule:
Dans le Module_UserFormMultipleScreens, 2 fonctions de positionnement UserForm:
- PlaceUserFormInExcelSameMonitor(Usf, Position)
- PlaceUserFormInExcelOtherMonitor(Usf, Position)

La position est une des constantes publiques déclarées dans le module en question:
VB:
Public Const PositionMiddle = "Middle"
Public Const PositionTopLeftCorner = "TopLeftCorner"
Public...

Dudu2

XLDnaute Barbatruc
@TooFatBoy, si tu as bien pris le dernier fichier, je comprends pas que tu puisses avoir des Left négatifs.
Chez moi, avec ou sans barre des tâches ça positionne correctement sur le 2ème écran.
Ou alors y a un truc énorme qui m'a échappé.

@patricktoulon, j'utilise la différence rcMonitor - rcWork pour déterminer la taille de la TaskBar où qu'elle soit.
Je n'ai que mon environnement pour tester et j'obtiens le résultat escompté.
Les tests de @TooFatBoy sont utiles pour confirmer les miens... sauf quand ça diverge et là c'est très difficile d'en trouver la cause car il faudrait que je me connecte chez lui.
Dans ton environnement Windows 7, peux-tu faire un Screenshot de ce que dit le Bouton 1 sur les valeurs d'affichage ?
 

Dudu2

XLDnaute Barbatruc
Ok, je comprends mieux, et il faut que je revoie tous les calculs qui ont comme hypothèse des valeurs positives.
Mais je ne comprends pas qu'il y ait des valeurs négatives ou des Top qui partent pas à 0 +/- un chouia avec les considérations de @patricktoulon sur les histoires de thème et autres. Bon, c'est comme ça.

Je verrai ça plus tard car en fait il faut que je remette tout à plat et que je simplifie.
Bonne soirée et merci encore.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Mais je ne comprends pas qu'il y ait des valeurs négatives ou des Top qui partent pas à 0.
C'est logique : puisque l'écran primaire commence en (0,0) et qu'il est à droite, les coordonnées horizontales de l'écran secondaire sont négatives.
De plus, comme les écrans ne sont pas alignés en haut, les coordonnées verticales de l'écran secondaire ne commencent pas à zéro.
 

Dudu2

XLDnaute Barbatruc
Je vois ! Donc pour me compliquer la vie, t'as mis le primaire à droite et un secondaire qui s'aligne pas.
Ah ben bravo !
1658505470906.gif

Remarque, si ça passe chez toi, ça passera partout
1658505537646.gif

Mais je crois savoir comment je vais simplifier mon bazar pour le faire fonctionner.
 

Dudu2

XLDnaute Barbatruc
Voilà, ça devrait aller beaucoup mieux et le code est bien simplifié.
Finalement je me base exclusivement sur le rcWork du GetMonitorInfo() Type MONITORINFO.
Tanpis si pour certains cas de thème ou autres de versions Windows < 10 il varie quelque peu. A voir.
@patricktoulon nous dira !

Chez moi ça marche parfaitement, et je ne fais plus aucun décalage savant en fonction du Moniteur ou de la Barre des Tâches. rcWork is the Truth
1658509284324.gif
.

Edit: une amélioration possible serait de désigner le n° de moniteur au cas où il y aurait 3+ moniteurs.
 

Pièces jointes

  • VBA Position UserForm avec 2 Moniteurs Screens Écrans.xlsm
    52.4 KB · Affichages: 2

TooFatBoy

XLDnaute Barbatruc
😍 C'est tout simplement parfait ! 😍

Ou presque : quand Excel est sur le secondaire, les UserForm s'affichent à l'inverse de là où ils devraient être.
Autrement dit, les UserForm s'affichent au même endroit, qu'Excel soit sur le primaire ou le secondaire.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote