XL 2016 affichage userform avec 2 ou + ecrans

roby

XLDnaute Occasionnel
Bonjour le forum,

Lorsqu'on lance un fichier Excel sur un poste avec plusieurs écrans, à chaque fois les userform s'affichent sur un autre écran que l'écran ou est affiché excel.
y a-t-il une parade pour que cet userform s'affiche dans la même fenêtre que excel ?

je joint le même fichier solutionné dernièrement pour le test.

Merci encore.
 

Pièces jointes

  • Roby1.xlsm
    19.8 KB · Affichages: 17

Lolote83

XLDnaute Barbatruc
Re,
Voici @Dudu2 ce que j'obtiens
1665658621790.png

@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
J'avais un code qui pouvait positionner une image en fonction de coordonnées (Cellule) et même faire du redimensionnement.
J'ai voulu voir ce que cela donnerait avec un UserForm
Voici le résultat. Peux être quelque chose a creuser de ce côté mais bon !!!!!

Edit : J'avais oublié la partie photo pour voir aussi le positionnement
@+ Lolote83
 

Pièces jointes

  • Pour Forum - TestPositionnement_USF.xlsm
    55 KB · Affichages: 6
Dernière édition:

Dudu2

XLDnaute Barbatruc
Ah ! Et j'ai oublié de signaler les problèmes issus des variations des marges des UserForms avec les versions d'Office (et de Windows ?).
Je me suis coltiné ce problème (avec @patricktoulon) avant pour pouvoir positionner un UserForm sur un Objet (voir cette Ressource).

En Windows 10+ (et aussi en Windows 8, pour les autres je ne sais pas) il y a des marges non visibles au UserForm. C'est à dire que si on le place en (0, 0) de l'écran, il semble ne pas y être précisément.
En fait il y est très précisément, mais ces foutues marges donnent l'impression visuelle qu'il n'y est pas.
1665674164097.png


Pour Windows 10+, j'ai géré ces marges dans la ressource mentionnée et dans les fonctions de positionnement de ce code en les retirant pour avoir un positionnement visuel au plus précis. Le résultat est qu'en position (0, 0), le UserForm est bien au coin haut gauche visuellement, mais ses coordonnées ont été corrigées des marges invisibles et donc négatives.
1665674233637.png


Je vous l'avais dit, ce n'est pas simple ! En fait ce n'est pas simple du tout !
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
@Lolote83,
Avec ce dernier fichier où j'ai ajouté l'affichage du RECT de la fenêtre Excel...
Pourrais-tu STP passer Excel dans l'écran secondaire en réduisant un peu sa fenêtre pour qu'il n'occupe pas tout l'écran, puis appuyer sur le bouton:
1665673817599.png
et voir si les valeurs de
1665673892970.png
sont cohérentes avec celles du Moniteur secondaire ?
Faire une capture d'écran ici aussi. Merci.
Enfin tous ceux qui veulent essayer sont les bienvenus :)
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bon, pas de retour
1665683170586.gif
. Ça n'intéresse plus personne ?
1665683202972.gif


Entre-temps j'ai progressé et simplifié. On peut quand même positionner le UserForm:
- Sur le Moniteur primaire ou secondaire en relatif (ratios V & H) ou en absolu (.Left & .Top en Points):
- En se basant sur une zone de référence qui est au choix:
> L'Écran (pas tellement d'intérêt car le UserForm ne peut être devant la Barre des Tâches)
> La Work Area (Écran moins Barre des Tâches, la référence de base)
> La fenêtre Excel
VB:
'--------------------------------------------------------
'List of functions (Check comments for parametres values)
'--------------------------------------------------------
' CountOfMonitors
' ExcelWindowMonitorNumber()
' PlaceUserFormInMonitor()
' GetMonitorRECT()
' GetWorkRECT()
' GetTaskBarRECT()
' GetExcelClientWindowRECT()
' PixelsToPointsX()
' PixelsToPointsY()
 

Pièces jointes

  • VBA 2 Monitors Screens Information and Userform Position.xlsm
    60.9 KB · Affichages: 7
Dernière édition:

Lolote83

XLDnaute Barbatruc
Bonjour @Dudu2 ,
Voici donc une copie d'écran sur écran secondaire avec Excel pas en plein écran
Bouton Display Monitor

1665728837174.png

Bouton UserForm
Un formulaire se déplace diagonalement de gauche à droite sur écran principal (même si Excel est sur écran secondaire).
Fin du déplacement sur copie ci-dessous
1665728985949.png


Idem avec Excel en écran principal réduit sur fond Word en plein écran
1665729343149.png



Voilà les résultats
@+ Lolote83
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour @Lolote83,
Et merci pour les tests. C'est tout bon.
J'ai quand même modifié le fichier du Post #25 pour faire s'envoler et atterrir le UserForm au travers des 2 écrans :).
Tu as tout pour maîtriser tes moniteurs et la fenêtre Excel avec les fonctions GetxxxRECT, savoir dans quel moniteur se trouve la fenêtre Excel et éventuellement positionner un UserForm dans le moniteur de ton choix par rapport à la zone de ton choix (Écran, Work Area, Fenêtre Excel) soit en relatif (avec les ratios V & H) soit en absolu (grâce aux valeurs de RECT converties de Pixels en Points).
 
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re bonjour,
Merci @Dudu2,
C'est dans ma boite de sauvegarde.
Bravo pour le travail réalisé

Au fait, as tu regardé le post#21, ne pouvait-on rien faire du coté UserForm. Je ne suis pas assez compétent mais peut être quelqu'un y arriverait ?

A bientôt sur le forum
@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Re bonjour @Dudu2,
Excuse moi si les explications ne sont pas claires.
Le code permet par exemple de positionner une image par rapport à l'angle supérieur gauche d'une cellule.
Donc, dans le fichier joint, si on clique sur le bouton "Positionnement sur cellule G4", l'image du papillon est donc positionnée par rapport à la cellule G4 et peu même être redimensionnée.
L'idée, puisque l'on parlait à l'origine de positionnement de Userform était de voir si on pouvait faire de même avec un UserForm. Mais a priori cela n'est pas concluant. C'était juste une idée.
C'est mieux expliqué maintenant ?
@+ Lolote83
 

Discussions similaires

  • Résolu(e)
Microsoft 365 32 ou 64 bits
Réponses
46
Affichages
2 K

Statistiques des forums

Discussions
315 168
Messages
2 116 933
Membres
112 923
dernier inscrit
ferganih