Option Explicit
Dim cls() As New UserForm1 '1 => nombre d'OptionButtons - 1 (base 0)
Public WithEvents OB As MSForms.OptionButton
Private Sub OB_Change()
If OB Then MsgBox OB.Caption
End Sub
Private Sub UserForm_Activate()
Dim n As Byte, c As Control
Dim CaptionX, couleurX
CaptionX = Array("bleu", "rouge", "vert", "jaune")
couleurX = Array(vbBlue, vbRed, vbGreen, vbYellow)
For n = 0 To UBound(CaptionX)
    Set c = Frame1.Controls.Add("Forms.OptionButton.1", "OB" & n + 1)
    c.Top = 8 + 18 * n
    c.Left = 10
    c.Caption = CaptionX(n)
    c.ForeColor = couleurX(n)
    ReDim Preserve cls(1 To n + 1): Set cls(n + 1).OB = c
Next n
End Sub