Positionnement USF (Sujet mystérieux)

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

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

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+ 😎
 
Dernière édition:
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+ 😎
 
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+
 
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+
 
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?
 
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+ 😎
 
Dernière édition:
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.
 
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+
 
- 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

T
Réponses
2
Affichages
1 K
Tubule
T
M
Réponses
11
Affichages
2 K
MattMons
M
G
Réponses
2
Affichages
1 K
GeoLek
G
I
Réponses
0
Affichages
745
Isabbold
I
T
Réponses
3
Affichages
7 K
tsikoudia91
T
F
Réponses
3
Affichages
2 K
F
O
Réponses
1
Affichages
3 K
G
Retour