Frame dans un For Each

Bonjour,

Je suis tout nouveau ici, j'ai cherché le forum sans trouver ma réponse, alors je vous la pose ! Je suis un novice en VBA sur Excel et on m'a chargé de réaliser une évaluation avec des questions où l'on doit répondre par "Bonnes", "Partielles" et "Aucune" avec des OptionButtons. J'ai donc pour chaque question, sur ma feuille, un frame avec les 3 optionbuttons et mon code est le suivant :

Sub validerEval()
    Dim i As Byte, Choix As String, Framei As MSForms.Controls, Ws As Worksheet
i = 1

For Each Ws In ThisWorkbook.Worksheets
For Each Framei In Ws
    If TypeName(Framei) = "Frame" Then
        For Each OptionButton In Framei.Controls
            If OptionButton.Value Then
                Choix = OptionButton.Caption
                If Choix = "Bonnes" Then
                    Cells(9 + i, 15) = 3
                ElseIf Choix = "Partielles" Then
                    Cells(9 + i, 15) = 2
                ElseIf Choix = "Aucune" Then
                    Cells(9 + i, 15) = 1
                Else
                    Cells(9 + i, 15) = ""
                End If
            End If
        Next
    End If

i = i + 1

Next
Next

End Sub

J'aimerai récolter les réponses de chaque frame sur une plage de cellule pour pouvoir comptabiliser les points, mais il m'est impossible de trouver une solution pour mettre "frame" avec un "for each". L'erreur du code ci-dessus donne :

Erreur d'exécution '438' : Propriété ou méthode non gérée par cet objet

à la ligne

For Each Framei In Ws

Je suis vraiment dans l'impasse et j'espère que vous pourrez m'aider à résoudre ce problème.

Merci d'avance !

Bonjour,

Pour balayer les Frames

    For Each Ctrl In Me.Controls
        If TypeOf Ctrl Is MSForms.Frame Then
            MsgBox Ctrl.Name
        End If
    Next Ctrl

A+

Merci pour la réponse, mais j'ai trouvé mon bonheur juste à l'instant !

Sub validerEval()
    Dim i As Byte, Choix As String, Ws As Object, Ctrl As OLEObject

i = 1
Set Ws = ActiveSheet

For Each Ctrl In Ws.OLEObjects
    If TypeOf Ctrl.Object Is MSForms.Frame Then
        For Each OptionButton In Ctrl.Object.Controls
            If OptionButton.Value Then
                Choix = OptionButton.Caption
                If Choix = "Bonnes" Then
                    Cells(9 + i, 15) = 3
                ElseIf Choix = "Partielles" Then
                    Cells(9 + i, 15) = 2
                ElseIf Choix = "Aucune" Then
                    Cells(9 + i, 15) = 1
                Else
                    Cells(9 + i, 15) = ""
                End If
            End If
        Next
    End If

i = i + 1

Next

End Sub
Rechercher des sujets similaires à "frame each"