changement détat d'une OptionButton

chouralie

XLDnaute Nouveau
Bonjour le Forum,

j ai un petit souci avec une proriété, je pense que je formule mal mon code.

J ai plusieurs bouton sur une feuille qui appelle un Userform (Cassettes), sur le Userform j'ai 15 OptionButton (de meme nom que sur la feuille), apres validation du UserForm je veux changer l'état de mes OptionButton (sur la feuille), le problème et que mon code plante, j'obtien une erreur 48 "Propiété ou méthode non gérée par cet objet":

le code est dans un module:
Code:
Public Function cocher()

Dim c As Control
Dim d As OLEObject
Dim i As Integer

For Each c In Cassettes.Controls
    If TypeName(c) = "OptionButton" Then
        If c.Value = True Then
            For Each d In Sheets("Infostock k7").OLEObjects
                If TypeOf d.Object Is MSForms.OptionButton Then
                    If d.Name = c.Name Then
                        MsgBox (d.Name) 'test pour voir si ca passe
                        [COLOR="Red"]d.Value = False[/COLOR]
                    End If
                End If
            Next d
        End If
    End If
Next c

End Function

j aurai bien aimé mettre le fichier mais trops gros :( meme ziper.

Si quelqu'un peux m'aider.

ps : feuil = "Infostock k7" sur cette feuille 13 boutons et 15 OptionButton
 

Pierrot93

XLDnaute Barbatruc
Re : changement détat d'une OptionButton

Bonjour Chouralie

essaye peut être ceci :

Code:
    d.Object.Value = False

mais attention, une "Function" à plutôt pour objectif de renvoyer un résultat, pourquoi ne pas utiliser une "sub" ?

bon après midi
@+
 
G

Guest

Guest
Re : changement détat d'une OptionButton

Bonjour le fil,
Pierrot:)

@Chouralie, les optionsbuttons étant exclusif, pas utiles de tous les parcourir.

Tu peux faire quelque chose comme ceci:

Dans Feuil1 trois boutons d'option nommés "Opt1" à "Opt3"
Dans le userform idem

Dans le userform:
Code:
Private Sub cmdValider_Click()
    Dim choix As Byte
    choix = ((Opt1 * 1) + (Opt2 * 2) + (Opt3 * 3)) * -1
    cmdValider.Caption = choix
    Sheets("Feuil1").OLEObjects("Opt" & choix).Object.Value = True
End Sub

Si tu as 15 boutons d'options dans ton userform tu peux effectivement boucler sur les 15 par un for next et sortir de la boucle dès le premier ayant pour valeur True.

En mettant à true celui qui correspond dans la feuille, les autres se mettront automatiquement à false.

Avec ta macro tu fais 15*15 boucle soit 225 tests en tout.

A+
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
17
Affichages
348

Membres actuellement en ligne

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal