XL 2010 Pb affichage userform

  • Initiateur de la discussion Initiateur de la discussion FG72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

FG72

XLDnaute Junior
Bonjour à tous,
D'abord, tous mes voeux pour cette nouvelle décennie 🙂
j'ai un problème d'affichage avec une configuration de poste avec 2 écrans: j'ouvre un classeur contenant un userform sur l'écran principal et si je veux le faire glisser sur le second écran, le userform (non modal) reste sur l'écran principal !

merci par avance de votre aide.

Bonne journée,
François
 
Bonjour FG72,
Il manque quelques informations.
Comment est fait vos partages d'écran ? Deux écrans séparés, mode étendu ....
Est ce spécifique à ce useform ? Pour moi c'est plutôt lié à votre configuration écrans.
 
Vos deux écrans sont ils séparés ou en mode étendu ?
Si dans le fichier excel vous faites "Ouvrir" , est ce que cette fenetre Ouvrir peut se déplacer sur les deux écrans ?
Sinon, cela vient de votre config écrans.
 
Comme moi.
Je viens de vérifier. Mon Useform peut se ballader sur les deux écrans.
Vous pourriez mettre votre fichier (anonymisé) à disposition.

Bonjour Patrick,
Exact. J'ai vérifié. Si on "sort du mauvais écran" ... évidemment il n'apparait pas sur l'autre.
 
re
Bonjour sylvanu
c'est un peut le soucis entre le mode etendu et le 2 ecrans
en fait en mode etendu sur W7 ca me donne un ecran de (ecran1.width+ecran2.width) de large
il faut donc jouer avec le left
en mode 2 ecrans pas de soucis
en gros dans l’événement layer du userform tu force le left a une certaine position

je ne sais plus si sans les api avec le application.width en mode etendu tu peux en récupérer le width de l'application
si c'est le cas
dans l'evenement layer
if me.left+me.width> application.width then me.left= application.width-me.width

cela a condition que l'application soit en windowstate xlmaximized( bien sur )

pour commencer
quand tu agrandi l'application ou se trouve t elle ? son width fait il 1 ecran ou deux ??
 
Dernière édition:
@ Patrick: je ne comprends pas tout ce que tu me dis, mais quand j'agrandis l'appli elle reste sur un écran.
@ Sylvanu: le useform se balade bien aussi mais il faut que je le fasse glisser d'un écran à l'autre indépendamment du fichier lui-même.
drais que le useform reste placé sur la feuille quand je glisse d'un écran à l'autre
 
re
burk!! burk!!! burk!! pouha!pouha!!
bye bye les apis
VB:
Option Explicit



Sub UserFormAlign()

    Dim  ptopx#
 
    'coefficientpoint to pixel sans api
    With ActiveWindow.ActivePane
        ptopx = (.PointsToScreenPixelsY(Cells.Height) - ActiveWindow.ActivePane.PointsToScreenPixelsY(0)) / Cells.Height
    End With
    With FormCal
        .StartUpPosition = 0
        .Left = (ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveCell.Left) / ptopx) + ActiveCell.Width' a droite de la cellule
        .Top = (ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveCell.Top) / ptopx) + ActiveCell.Height ' a  l'angle bottom-right de la cellule
        '.Show
    End With
End Sub

souhaitons tout de même que tu n'est pas de fractionnage du sheets dans quel cas tu trouvera mon calendrier dans les resources de ma collection fausse boite de dialogue dans le quel tu y trouvera la fonction de placement même sur un sheets fractionné
cela a été mis au point par Dranreb,Rolland et moi après une très longue discussion

burk!!! les api en 64
LOL 😉

ps: tu devra peut etre supprimer ".Activepane" du code pour 64 😉

edit: code nettoyé de tout commentaire
 
Dernière édition:
pardon, le S entre crochets ??
re
burk!! burk!!! burk!! pouha!pouha!!
bye bye les apis
VB:
Option Explicit



Sub UserFormAlign()

    Dim  ptopx#

    'coefficientpoint to pixel sans api
    With ActiveWindow.ActivePane
        ptopx = (.PointsToScreenPixelsY(Cells.Height) - ActiveWindow.ActivePane.PointsToScreenPixelsY(0)) / Cells.Height
    End With
    With FormCal
        .StartUpPosition = 0
        .Left = (ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveCell.Left) / ptopx) + ActiveCell.Width' a droite de la cellule
        .Top = (ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveCell.Top) / ptopx) + ActiveCell.Height ' a  l'angle bottom-right de la cellule
        '.Show
    End With
End Sub

souhaitons tout de même que tu n'est pas de fractionnage du sheets dans quel cas tu trouvera mon calendrier dans les resources de ma collection fausse boite de dialogue dans le quel tu y trouvera la fonction de placement même sur un sheets fractionné
cela a été mis au point par Dranreb,Rolland et moi après une très longue discussion

burk!!! les api en 64
LOL 😉

ps: tu devra peut etre supprimer ".Activepane" du code pour 64 😉

edit: code nettoyé de tout commentaire

Mai
trop balaise!!!???????? 😵 😳🙄
c'est du tout cuit 🙄
je repete le ps
tu devra peut etre supprimer ".Activepane" du code pour 64😉

Tu as raison, mais je suis assez limité 🙄, en tout cas merci mille fois. Je vais tester également sur les autres configs car ce classeur sera utilisé sur des postes différents.
Merci également à sylvanu pour ses recherches, on se sent moins seul 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
266
Réponses
7
Affichages
910
Réponses
10
Affichages
705
Retour