Affecter une macro à un Option Bouton via une macro

Bonjour tous le monde,

Je réalise un outils sur excel dont l'un des objectifs est qu'il soit par la suite utilisable par toute mon équipe, sans qu'ils aient à se soucier d'affecter des macros et de coder dans le Visual Basic

J'ai quelques difficultés qui persistent... Et un peu d'aide serait la bienvenue

En fait, j'ai un formulaire (Userform1) qui permet d'ajouter un "supplier" (un de mes inputs de l'outil), et à la validation du formulaire, un OptionButton est généré sur ma feuille "Start" et renommé comme ceci (Option_supplier). et comme 'caption name ' SupplierAvec Supplier = TextBox1 de mon Userform

Seulement,

Probleme n°1: j'aimerai qu'une macro (choix() ) soit automatiquement affecté à cet OptionButton.

Probleme n°2: je n'arrive pas a réaliser ma macro choix(). Cette macro consiste à affecter à la cellule S4 de ma feuille "Start" le nom du Supplier dont le bouton Option est actif.

J'ai vu des sujets similaires sur d'autres forums mais aucune des solutions lues ne fonctionnent sur mon problème. J'ai l'impression que le problème vient du OptionButton dont les propriétés/méthodes ne sont pas reconnues.

Merci d'avance de vôtre aide,

A+

Private Sub CommandButton_valider_Click()

If MsgBox("INSERT this new Supplier?", vbYesNo, "Confirmation") = vbYes Then 'condition : si oui au message
Dim L As Integer
Dim bouton_L As Object
Dim t As Double

L = Sheets("SupplierDatas").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
t = L

Sheets("SupplierDatas").Range("A" & L).Value = TextBox1
Sheets("SupplierDatas").Range("B" & L).Value = TextBox2 'Insère la donnée de la textbox2
Sheets("SupplierDatas").Range("C" & L).Value = TextBox3
Sheets("SupplierDatas").Range("D" & L).Value = TextBox4
Sheets("SupplierDatas").Range("E" & L).Value = TextBox5
Sheets("SupplierDatas").Range("F" & L).Value = TextBox6
Sheets("SupplierDatas").Range("G" & L).Value = TextBox7

Set bouton_L = Sheets("Start").OptionButtons.Add(675, 65 + (20 * t), 55, 18)
bouton_L.Name = "Option_" & TextBox1
bouton_L.Caption = TextBox1

Sheets("Start").bouton_L.OnAction = "Choix_bouton"
End If

'Code permettant de modifier le format de la plage de cellule en format nombre
With Ws.Range("D2:d10")
            .NumberFormat = "0"
            .Value = .Value
End With

' Affiche une boîte de message
MsgBox ("Supplier Added to the Database") 'informant que le présent contact est insérer dans votre tableau Excel.

Unload Me ' Vide et ferme l'Userform ( formulaire)
Sheets("SupplierDatas").Activate

End Sub

et voici la procedure pour la macro Choix_bouton

Sub Choix_bouton()
Dim i As Integer
Dim supplier As String
Dim bouton_i As OptionButton

For i = 4 To Count
supplier = Sheets("SupplierDatas").Cells(i, 1)
bouton_i = Object.Caption(supplier)
If Sheets("Start").bouton_i = True Then
Sheets("Start").Cells("4,19") = supplier
End If
Next
End Sub

Bonjour,

Comme l'objet que tu veux ajouter à ta feuille est un Bouton d'option "Formulaire" tu peux directement utiliser le type "Shape" à la place du type générique "Object" :

Private Sub CommandButton_valider_Click()

    If MsgBox("INSERT this new Supplier?", vbYesNo, "Confirmation") = vbYes Then 'condition : si oui au message

        Dim L As Integer
        Dim bouton_L As Shape
        Dim t As Double

        L = Sheets("SupplierDatas").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
        t = L

        Sheets("SupplierDatas").Range("A" & L).Value = TextBox1
        Sheets("SupplierDatas").Range("B" & L).Value = TextBox2 'Insère la donnée de la textbox2
        Sheets("SupplierDatas").Range("C" & L).Value = TextBox3
        Sheets("SupplierDatas").Range("D" & L).Value = TextBox4
        Sheets("SupplierDatas").Range("E" & L).Value = TextBox5
        Sheets("SupplierDatas").Range("F" & L).Value = TextBox6
        Sheets("SupplierDatas").Range("G" & L).Value = TextBox7

        Set bouton_L = Sheets("Start").Shapes.AddFormControl(xlOptionButton, _
                                                             675, _
                                                             65 + (20 * t), _
                                                             55, _
                                                             18)

         With bouton_L

            .Name = "Option_" & TextBox1.Text
            .TextFrame.Characters.Text = TextBox1.Text
            .OnAction = "Choix_bouton"

        End With

    End If

    'Code permettant de modifier le format de la plage de cellule en format nombre
    With Ws.Range("D2:d10")

        .NumberFormat = "0"
        .Value = .Value

    End With

    ' Affiche une boîte de message
    MsgBox ("Supplier Added to the Database") 'informant que le présent contact est insérer dans votre tableau Excel.

    Unload Me ' Vide et ferme l'Userform ( formulaire)
    Sheets("SupplierDatas").Activate

End Sub

Maintenant, si tu veux malgré tout garder ton code en l'état, il te suffit de remplacer cette ligne :

Sheets("Start").bouton_L.OnAction = "Choix_bouton"

par celle-ci :

Sheets("Start").Shapes(bouton_L.Name).OnAction = "Choix_bouton"

Ca marche!! Merci milles fois! Je savais qu'il n'y avait pas grand chose à changer mais j'arrivais pas à trouver la bonne solution !

Rechercher des sujets similaires à "affecter macro option bouton via"