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

  • Initiateur de la discussion Initiateur de la discussion SiD88
  • 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 !

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

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

Dernière édition:
- 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

Retour