Bonjour,

Je rencontre un petit souci sur un UserForm (qui s'appelle AjoutMoyenAcces) que je cherche à la placer au centre de la fenêtre lors de son lancement. Le code pour effectuer un tel placement est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub AjoutMoyenAcces_Initialize()
    ' Détermination de la largeur et de la hauteur de la fenêtre courante
    LargeurFenêtre = ActiveWindow.Width
    HauteurFenêtre = ActiveWindow.Height
    ' Détermination des positions gauche et droite de Excel
    PositionGauche = Application.Left
    PositionHaut = Application.Top
    ' Affectation de la position à l'UserForm
    AjoutMoyenAcces.Left = PositionGauche + LargeurFenêtre / 2 - AjoutMoyenAcces.Width / 2
    AjoutMoyenAcces.Top = PositionHaut + HauteurFenêtre / 2 - AjoutMoyenAcces.Height / 2
End Sub
Le problème, c'est que ce placement fonctionne de façon un peu aléatoire surtout lors du premier lancement de mon UserForm où ce dernier s'entête à apparaître dans le coin supérieur gauche.

Par ailleurs, lorsque je redimensionne ma fenêtre Excel, la première fois que je lance l'UserForm, celui-ci se place comme s'il n'avait pas encore compris que la fenêtre était redimensionnée. Il faut attendre le second lancement pour qu'il se positionne conformément à la nouvelle fenêtre.
Un peu comme si il fallait un premier lancement pour que le Initialize ait analysé la géométrie de ma fenêtre et qu'il fonctionne correctement...

Je précise que je travaille en multi-écrans.

Merci d'avance de votre aide !