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
C

Compte Supprimé 979

Guest
Bonjour Roby,

Voici ce que j'utilises dans l'Userform
VB:
Private Sub UserForm_Initialize()
  ' Centrer l'USF
  With Me
    .StartUpPosition = 0   ' Edit oublié car au tout début de ma procédure
    .Left = (Application.Left + Application.Width) - ((Application.Width + .Width) / 2)
    .Top = (Application.Top + Application.Height) - ((Application.Height + .Height) / 2)
  End With
End Sub

A+
 
Dernière modification par un modérateur:

Lolote83

XLDnaute Barbatruc
Bonjour à tous
Perso je rajoute la commande StartUpPosition=0, mais est-elle utile ? Après plusieurs essais sur les 4 choix proposés, je pense que OUI, sinon rien ne change par rapport à ce qu'à écrit @BrunoM45 .

Les 4 choix proposés sont :
- StartUpPosition = 0 (Manual)
- StartUpPosition = 1 (CenterOwner)
- StartUpPosition = 2 (CenterScreen)
- StartUpPosition = 3 (Windows Default)

VB:
Private Sub UserForm_Initialize()
    '-------------------------------------------------------- Positionnement UserForm
    Me.StartUpPosition = 0                                                  'Déclarer position MANUAL
    Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2
    Me.Top = Application.Top + Application.Height / 2 - Me.Height / 2
End Sub
@+ Lolote83
 

Dudu2

XLDnaute Barbatruc
Si la solution de @BrunoM45 ne donnait pas satisfaction au demandeur, j'ai un classeur avec pas mal de fonctions qui permettent de positionner un UserForm dans le même ou l'autre écran que celui d'Excel, récupérer les RECT des écrans, des zones de travail (hors barres des tâches), des barres des tâches, etc...
J'ai dû m'y coltiner pour un utilisateur et comme c'est plus complexe je ne le proposerai que si nécessaire.
 

Dudu2

XLDnaute Barbatruc
La question que je me pose c'est comment indiquer le positionnement du UserForm relatif à l'écran demandé (celui d'Excel ou l'autre) sachant que par Left et Top c'est pas évident puisque les Left et Top de référence ne sont pas forcément à 0 si c'est le Moniteur secondaire.

Je vais tenter un positionnement soit milieu (par défaut) soit par ratios de décalage (horizontal et vertical) par rapport à l'écran demandé. Mais pour un positionnement précis, peut-être faut-il aussi pouvoir indiquer les Left et Top.
 

Lolote83

XLDnaute Barbatruc
Re,
perso, j'ai deux écrans
Ecran de gauche : Coordonnées (x,y)
- Haut Gauche = 0,0
- Bas Gauche = 0,1079
- Haut Droite = 1019,0
- Bas Droite = 1019,1079

Ecran de droite
- Haut Gauche = 1920,0
- Bas Gauche = 1920,1079
- Haut Droite = 3839,0
- Bas Droite = 3839,1079

Avec ces informations, peut être peut-on décaler les UserForms avec Left et Top
@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Bonjour @TooFatBoy ,
J'ai un doute en voyant tes données
Qu'attendais tu comme valeurs alors ?
Les données fournies au post#12 sont celles de mes deux écrans quand je positionne la sourie
- En haut à gauche de l'écran de gauche (0,0) en haut à gauche de l'écran de droite (1920,0) etc etc etc

1665658459338.png


1665658551029.png
 

Discussions similaires

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

Statistiques des forums

Discussions
315 147
Messages
2 116 770
Membres
112 857
dernier inscrit
sanogo