Dim propert
'----------------------------------------------------------------------------------------------------
Private Sub UserForm_Activate()    'evenement quand le userform s'active
    With Application
    If Not IsArray(propert) Then propert = Array(.WindowState, .Left, .Top, .Width, .Height)   'on mémorise la position initiale de la fenêtre application
        'on la dimentionne pareille que le userform
        .Width = Me.Width
        .Height = Me.Height
        .Top = Me.Top
        .Left = Me.Left
    End With
End Sub
'---------------------------------------------------------------------------------------------------
'evenement quand le userform se deplace
Private Sub UserForm_Layout()    
    With Application
    .Top = Me.Top
    .Left = Me.Left
End With
End Sub
'---------------------------------------------------------------------------------------------------
' on remet la fentre application comme avant a la fermeture du userform
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     With Application
        .WindowState = propert(0)
        If propert(0) <> xlMaximized Then
            .Left = propert(1)
            .Top = propert(2)
            .Width = propert(3)
            .Height = propert(4)
        End If
    End With
End Sub