Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.

Merci par avance.
 

Pièces jointes

  • VBA Multiple 2 Moniteurs Screens Écrans.xlsm
    35.4 KB · Affichages: 14
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
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
    46.2 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
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.
 

Dudu2

XLDnaute Barbatruc
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à !
 

TooFatBoy

XLDnaute Barbatruc
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.
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 ???
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…