Tu peux définir à l'affichage, il faut donc masquer le Userform pour le réafficher en définissant sur modal ou non modal.
Tu ajoutes dans ton Userform un bouton bascule (ToggleButton)
tu laisses dans la fenêtre de propriétés les valeurs par défaut : Value sur False et Caption, tu inscris Modal,
(tu veilles à ce que la propriété par défaut ShowModal du Userform soit à True)
et tu places le code suivant :
Private Sub ToggleButton1_Click()
Me.Hide
With ToggleButton1
If .Value Then
.Caption = "Non Modal"
Me.Show vbModeless
Else
.Caption = "Modal"
Me.Show vbModal
End If
End With
End Sub
Le Userform s'étant ouvert en modal, quand tu appuiera sur le bouton, il prendra un aspect enfoncé, son libellé deviendra Non Modal et le Userform passe en non modal. Un nouvel appui, le bouton se rebombe, libellé devient Modal et le Userform passe en Modal.
Cordialement.