Bonjour,
Il te faut utiliser la procédure évènementielle "Change()" du bouton d'option en ayant au préalable défini la propriété ShowModal du formulaire à False :
Private Sub OptionButton1_Change()
If OptionButton1.Value = True Then UserForm1.Show Else Unload UserForm1
End Sub
Attention tout de même, je suis parti du principe que tes boutons d'option sont des contrôles ActiveX !
Maintenant, si tu veux que ton formulaire n'est pas la croix, tu colles ce code dans le module du formulaire :
Private Declare Function F_Win _
Lib "User32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Private Declare Function S_Win _
Lib "User32" _
Alias "SetWindowLongA" ( _
ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Sub UserForm_Initialize()
Me.Caption = ""
S_Win F_Win("ThunderDFrame", vbNullString), -16, 0& And -524289
End Sub
Pour le premier test, pose un bouton sur ton formulaire avec dans sa procédure évènementielle "Click()" :
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
car sans la croix, impossible de le fermer !