Choisir la position sur l'écran de la réduction d'un UseForm

SiD88

XLDnaute Junior
Bonjour à tous,

J'ai réaliser une liste déroulante sur laquelle j'ai rajouter la petite barre de réduction.
Le problème est lorsque je minimise mon Useform, il vient s'installer en bas à gauche de mon écran, masquant alors les titres et l'accès aux feuilles de mon classeur.

Existe t il une possibilité pour choisir le lieu de cette minimisation sur l'écran?

voici le bout de code correspondant à l'action de minimisation.

Private Sub UserForm_Initialize()
Remplissage
Me.StartUpPosition = 2
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
Dim hSysMenu As Long
End Sub

Merci
 

Papou-net

XLDnaute Barbatruc
Re : Choisir la position sur l'écran de la réduction d'un UseForm

Bonjour SiD,

Peut-être en réglant la position haute comme ceci :

Code:
Private Sub UserForm_Initialize()
Remplissage
 Me.Top = (ActiveWindow.Height - Me.Height) / 2
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
Dim hSysMenu As Long
End Sub
Cordialement.
 

SiD88

XLDnaute Junior
Re : Choisir la position sur l'écran de la réduction d'un UseForm

Bonjour Papou-net,

Cela ne fonctionne pas, mon Useform reste centré au milieu de l'écran (comme quand je l'ai fixé Me.StartUpPosition = 2), et la réduction continue à se mettre en bas à gauche.
Avec ta proposition je m'attendais à voir le useform centré sur la partie supérieur de l'écran.


BC
 

job75

XLDnaute Barbatruc
Re : Choisir la position sur l'écran de la réduction d'un UseForm

Bonjour SiD, Papou-net,

Le fichier joint se passe des API Windows :

Code:
Dim L, H, Lm, Hm 'mémorise les variables

Private Sub Label1_Click()
Dim test As Boolean
test = Label1 Like "*rest*"
Label1 = "Clic pour " & IIf(test, "réduire", "restaurer")
Me.Width = IIf(test, L, Lm)
Me.Height = IIf(test, H, Hm)
End Sub

Private Sub UserForm_Initialize()
L = Me.Width
H = Me.Height
Lm = Label1.Left + Label1.Width
Me.Height = 0
Hm = Me.Height + Label1.Top + Label1.Height
Me.Width = Lm
Me.Height = Hm
End Sub
Je ne suis pas occupé du positionnement...

A+
 

Pièces jointes

  • USF(1).xls
    35.5 KB · Affichages: 39
  • USF(1).xls
    35.5 KB · Affichages: 51
  • USF(1).xls
    35.5 KB · Affichages: 50

Papou-net

XLDnaute Barbatruc
Re : Choisir la position sur l'écran de la réduction d'un UseForm

RE : bonjour job,

@ SiD : avec ton fichier joint, et sans données confidentielles, ce serait peut-être plus facile.

Sauf si la solution de job fonctionne.

Cordialement.
 

job75

XLDnaute Barbatruc
Re : Choisir la position sur l'écran de la réduction d'un UseForm

Re,

Quelques compléments.

- Ouverture de l'USF en non modal (0 ou vbModeless).

- Propriété StartUpPosition de l'USF sur Manual (0).

- Ce code :

Code:
Private Sub UserForm_Initialize()
'-------
On Error Resume Next 'si les noms x et y n'existent pas
Me.Left = [x]
Me.Top = [y]
End Sub

Private Sub UserForm_QueryClose(cancel As Integer, closemode As Integer)
On Error Resume Next 'si les noms x et y n'existent pas
'modification des noms uniquement quand c'est nécessaire
If Me.Left <> [x] Or Me.Top <> [y] Then
  ThisWorkbook.Names.Add "x", Me.Left
  ThisWorkbook.Names.Add "y", Me.Top
End If
End Sub
A la 1ère ouverture, l'USF (réduit) se place en haut à gauche de l'écran.

On peut le positionner où l'on veut, et la position sera mémorisée quand on fermera l'USF.

Fichier (2).

A+
 

Pièces jointes

  • USF(2).xls
    39 KB · Affichages: 60
  • USF(2).xls
    39 KB · Affichages: 63
  • USF(2).xls
    39 KB · Affichages: 62
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 390
Messages
2 087 951
Membres
103 683
dernier inscrit
Cescodelvar