Hello, j'ai trouvé ce qui suit sur le site de laurent longre (il me semble), je l'ai testé par le passé et ça fonctionne sous 97 SR-2 :
'Les UserForms d'Excel 97 sont en principe modaux : tant que le UserForm est affiché
' il est impossible à l'utilisateur de parcourir les feuilles de calcul
'saisir de nouvelles données etc.
'Sous Excel 2000, l'introduction de la propriété ShowModal permet de faire des UserForms
'non modaux. En mettant cette propriété sur True dans la fenêtre des propriétés
'du UserForm, ou en l'affichant par l'instruction : MonUserForm.Show Modal:=vbModeless
'... le UserForm sera affiché de manière non modale, et l'utilisateur pourra parcourir
'ses feuilles de calcul et faire des modifications pendant que la boîte de dialogue
'est affichée.
'Le code suivant, à mettre dans le module du UserForm, permet d'afficher
'la boîte de dialogue de manière non modale sous Excel 97
'comme sous Excel 2000 (merci à Stephen Bullen pour le "truc",
'basé sur la fonction EnableWindow).
'Il dote également le UserForm de boutons de réduction et d'agrandissement
'permettant de le réduire en bas de la fenêtre Excel et de le rétablir
'à sa taille d'origine.
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "User32" _
(ByVal hWnd As Long, ByVal bEnable As Long) As Long
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Sub UserForm_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub