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.
Merci par avance.
@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...
J'ai ajouté l'option en [L8]. Essaie avec cette option 1 pour le 3ème bouton.
Si tu ne vois pas le UserForm fait {F1} pour afficher ses coordonnées.
D'autre part je ne comprends pas ton dernier screenshot où tu dis être en écran secondaire ce que ne voit pas le bouton 1. Je l'ai complété d'une information pour voir où se trouve Excel par rapport à l'écran primlaire.
C'est très difficile de tester comme ça. Si on n'y arrive pas, j'essaierai de trouver une solution chez moi.
Pièces jointes
VBA Position UserForm avec 2 Moniteurs Screens Écrans.xlsm
Petit bémol, mais probablement voulu : pour 4 et 5, les fenêtres ne sont pas tout à fait en bas. Il y a un petit espace entre la fenêtre et la barre des tâches.
L'écart au dessus est de 0.8 point, peu visible.
Les décalages à gauche pour 2 et à droite pour 3 sont des marges invisibles du UserForm.
Elles font partir intégrante du UserForm.
Si tu veux voir la même chose sans les marges du UserForm prends le fichier dans ce post.
J'y ai retiré les marges du UserForm en Windows 10.
Mais attention, il n'y a pas ces marges pour les version antérieures de Windows / Excel ou ce ne sont pas les mêmes.
S'il le faut je corrigerai ça plus tard. Mais avant il faut résoudre le positionnement en écran secondaire et selon les différences de résolution, ce n'est pas de la tarte alors que ça devrait être simple.
il faut résoudre le positionnement en écran secondaire et selon les différences de résolution, ce n'est pas de la tarte alors que ça devrait être simple.
Bon, j'ai réussi à utiliser mon petit laptop et connecter l'écran de mon desktop en secondaire.
C'est très compliqué.
Déjà pour savoir si Excel est en primaire ou en secondaire, on ne peut pas utiliser ActiveWindow à cause de ces histoire de thème qui donnent des coordonnées foireuses (jamais 0 en Activewindow.Left en full screen).
Il faut aller chercher les coordonnées absolues du Client Excel. Ok ça je sais faire.
Mais reste un problème délicat. Comment récupérer la hauteur de l'écran secondaire ?
Le Height Total donne le plus grand des 2. Il faut que je trouve une solution sinon ça s'arrêtera là !
Oui, et je suppose que ce n'est pas forcément l'écran secondaire qui pose problème mais, de façon plus générale, l'écran avec la définition verticale la plus faible.
Le problème semble bien être là : il faudrait arriver à obtenir les définitions réelles de chacune des sorties vidéos actives.
Il est probable qu'Excel ne sache pas faire ça et que seul Windows puisse te donner la réponse. Mais comment ???