Positionnement USF (Sujet mystérieux)

RONIBO

XLDnaute Impliqué
Bonjour,

j'ai un code qui permet de mettre en premier mon usf, même durant la navigation dans Windows (Internet, dossier etc)

je modifie l'option en mettant -2 dans la procédure close pour qu'il passe cette fois ci en arrière plan, car si je modifie pas l'option je risque de pas voir mon msgbox (Il sera derrière mon usf)

Mon problème est quand je cliques sur annuler au msgbox, mon userform change de position je sais pas pour quelle raison.

Avez vous une idée?

Merci d'avance
 

Pièces jointes

  • Exemple1.xlsm
    18.7 KB · Affichages: 53
  • Exemple1.xlsm
    18.7 KB · Affichages: 54

Lone-wolf

XLDnaute Barbatruc
Re : Positionnement USF (Sujet mystérieux)

bonjour RONIBO

met Show Modal à False dans les propriétés du formulaire pour voir.

Edit: J'ai vu maintenant, il faut enlever les positions du formulaire dans query close.



A+ :cool:
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Positionnement USF (Sujet mystérieux)

Je vois pas de quoi tu parle :((


de ceci: PositionneUserform -2 et -1. C'est ces 2 lignes qui causent problème.

Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  PositionneUserform -2
    If CloseMode <> vbFormCode Then
        Select Case MsgBox("Voulez-vous enregistrer les modifications avant de quitter le programme ?", vbYesNoCancel + vbQuestion + vbDefaultButton1, "Enregistrer avant de quitter ?")
        Case vbYes
            ThisWorkbook.Save
            Application.DisplayAlerts = False
            Application.Quit
        Case vbNo
            ThisWorkbook.Saved = True
            Application.DisplayAlerts = False
            Application.Quit
        Case vbCancel
        PositionneUserform -1
            Cancel = True
        End Select
    End If
End Sub


A+ :cool:
 

RONIBO

XLDnaute Impliqué
Re : Positionnement USF (Sujet mystérieux)

Bonsoir,

Je viens de tester à nouveau le code que tu m'as donné, dès que je clique sur la croix de fermeture, mon usf change de position, si je fais annuler il change encore une fois de position,

Alors la je comprends plus rien...

A+
 

job75

XLDnaute Barbatruc
Re : Positionnement USF (Sujet mystérieux)

Bonjour RONIBO, Lone-wolf,

Il faut fixer la position de l'USF (propriétés Left et Top) dans ces 2 macros :

Code:
Private Sub Workbook_Open()
With UserForm1
  .Left = 300 'à adapter
  .Top = 150 'à adapter
  .Show 0
End With
End Sub
Code:
Sub PositionneUserform(Devant As Integer)
Dim Position As Long
Dim Hwnd As Long
Dim Hauteur As Long
Dim Largeur As Long
    With Me
        Hauteur = .Height
        Largeur = .Width
        Hwnd = FindWindowA(vbNullString, .Caption)
        Position = SetWindowPos(Hwnd, Devant, .Left, .Top, .Width, .Height, 0)
        .Width = Largeur
        .Height = Hauteur
        .Left = 300
        .Top = 150
    End With
End Sub
A+
 

RONIBO

XLDnaute Impliqué
Re : Positionnement USF (Sujet mystérieux)

Bonjour,

Sur mon fichier ça passe bien mais dès que je fais la même chose dans mon fichier original, le msgbox reste derrière :(

Tu peux tester de ton côté si v'est le cas aussi stp

A+
 

Pièces jointes

  • Gestion des identifiants et mots de passe.xlsm
    53.4 KB · Affichages: 26

RONIBO

XLDnaute Impliqué
Re : Positionnement USF (Sujet mystérieux)

Salut Job75,

Nos réponse se sont croisées:)

J'ai testé les codes, il me change pas les positions top et left dès que je lance le workbook open, puis le message reste toujours derrière l'usf

Si j'ai bien compris, tu veux déplacé l'usf à ouverture et au moment du clic sur la croix de fermeture? je me trompe?
 

Lone-wolf

XLDnaute Barbatruc
Re : Positionnement USF (Sujet mystérieux)

Re,

même après avoir supprimer la protection de la feuille, quand je clique sur la croix du formulaire, tout se bloque; Wy???

Avec Exemple1 par contre il n'y a pas de problèmes.



A+ :cool:
 
Dernière édition:

RONIBO

XLDnaute Impliqué
Re : Positionnement USF (Sujet mystérieux)

Justement le problème il est la lol,

Le message est derrière, c'est ça que je comprends pas :(

Pour débloquer je fais un déboggage (Crtl alt)
Puis appuie sur Entrée, puis j'arrête le code.
 

job75

XLDnaute Barbatruc
Re : Positionnement USF (Sujet mystérieux)

Re,

Si l'on veut maintenir l'USF au centre de l'écran, mettre dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
CentrerUSF
UserForm1.Show 0
End Sub

Sub CentrerUSF()
Application.WindowState = xlMaximized
With UserForm1
  .Left = (Application.Width - .Width) / 2
  .Top = (Application.Height - .Height) / 2
End With
End Sub
Et dans l'USF :

Code:
Sub PositionneUserform(Devant As Integer)
Dim Position As Long
Dim Hwnd As Long
Dim Hauteur As Long
Dim Largeur As Long
    With Me
        Hauteur = .Height
        Largeur = .Width
        Hwnd = FindWindowA(vbNullString, .Caption)
        Position = SetWindowPos(Hwnd, Devant, .Left, .Top, .Width, .Height, 0)
        .Width = Largeur
        .Height = Hauteur
        ThisWorkbook.CentrerUSF
    End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Positionnement USF (Sujet mystérieux)

Re,

Je joins le fichier au cas où...

Testé sans problème sur Excel 2010 et 2013 : l'USF est ouvert au centre de l'écran.

Il y reste à la fermeture et le message Excel est bien au 1er plan.

A+
 

Pièces jointes

  • Exemple(1).xlsm
    15.5 KB · Affichages: 28
  • Exemple(1).xlsm
    15.5 KB · Affichages: 23

Statistiques des forums

Discussions
312 303
Messages
2 087 047
Membres
103 441
dernier inscrit
MarioC