Appel d'une Macro avec un Ctrl.Caption

Salut le Forum,

J'ai un UserForm avec une Frame et dans celle-ci j'ai plusieurs OptionButton

Chaque OptionButton contient uniquement le nom d'une société, et la procédure à appeler serra différente selon l'OptionButton cochée

Vue la quantité d'OptionButton, je me suis dit que j'allais Boucler sur eux (via un For Each) et appeler la procédure correspondante si l'objet qui est testé répond VRAI aux conditions : Ctrl.Name Like "OptionButton*" et Ctrl.Value = True

Le hic c'est qu'appeler une macro ensuite via un Call Ctrl.Caption sa ne fonctionne pas :p

Vous auriez une idée ^^ ?

Le code :

Private Sub CommandButton1_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If Ctrl.Name Like "OptionButton*" Then
        If Ctrl.Value = True Then Call Ctrl.Caption
    End If
Next Ctrl
End Sub

Merci d'avance pour vos retours

Bonjour Juice,

Essaye comme ceci:

Private Sub CommandButton1_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If Ctrl.Name Like "OptionButton*" Then
        If Ctrl.Value = True Then  Call CStr(Ctrl.caption)
    End If
Next Ctrl
End Sub

Salut Florian,

Merci pour ton retour!

En collant ton code, j'ai une erreur "de compilation: Attendu: identificateur" avec CStr de surligné :p!

Essaye de passer par une étape et de voir que vaut la variable cmd en faisant un point d’arrêt dessus.

Private Sub CommandButton1_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If Ctrl.Name Like "OptionButton*" Then
        If Ctrl.Value = True Then  
        cmd = CStr(Ctrl.caption)
        Call cmd
        End if
    End If
Next Ctrl
End Sub

Voici un code qui devrait fonctionner :

Private Sub CommandButton1_Click()
Dim Ctrl As Control

For Each Ctrl In Me.Controls
    If Ctrl.Name Like "OptionButton*" Then
        If Ctrl.Value = True Then
        CallByName Me, "M" & CStr(Ctrl.Caption), VbMethod
        End If
    End If
Next Ctrl
End Sub

Sub MOptionButton1()

End Sub

Reee~

Essaye de passer par une étape et de voir que vaut la variable cmd en faisant un point d’arrêt dessus.

Alors j'ai le message "Sub, Function ou Property attendue" avec la ligne Call cmd de surligné

Voici un code qui devrait fonctionner :

Malheureusement j'ai un message d'erreur "Propriété ou méthode non gérée par cet Objet" avec CallByName de surligné :/

Merci pour tes retours!

Je rajoute à ma demande, mon fichier avec l'UserForm pour que tu puisse tester tes codes

11exemple.xlsm (22.77 Ko)

Bonjour à tour

Run au lieu de Call

Private Sub CommandButton1_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
    If Ctrl.Name Like "OptionButton*" Then
        If Ctrl.Value = True Then Run Ctrl.Caption
    End If
Next Ctrl
End Sub

Veni, vidi, vici

C'est super Steelson! Sa marche impec'!

Merci à vous deux pour votre temps et votre aide!

Rechercher des sujets similaires à "appel macro ctrl caption"