Empêcher l'évènement "click" sur OptionButton

ailete

XLDnaute Nouveau
Bonjour,
j'ai un formulaire avec plusieurs optionbutton.
Je peux enregistrer ce formulaire, et donc l'état des optionbutton en listant leur value dans une feuille Excel que je rattache aux controles par la propriété ControlSource.
J'ai des actions qui s'effectuent sur l'évènement "Click" de quelques uns de ces optionbutton.

J'aimerais empêcher que le programme entre dans l'évènement Click, lorsqu'au chargement d'un formulaire sauvegardé, la valeur d'un optionbutton passe à TRUE.

Est-ce possible selon vous?

Merci d'avance!!
 

pijaku

XLDnaute Occasionnel
Re : Empêcher l'évènement "click" sur OptionButton

Salut kjin,
Oui, tout à fait!! D'autant plus que 3-4 lignes + 1 colonne de données suffisent...
Mais je soupçonne notre ailette d'être novice en matière d'utilisation des forums Excel sur Internet.
Forumeuse débutante, elle n'a pas encore confiance en notre (ton) jugement.
Mais à force de persévérance, je reste persuadé que nous élucideront, ensemble, son cas.
A+
 

ailete

XLDnaute Nouveau
Re : Empêcher l'évènement "click" sur OptionButton

on avance...
Peux t'on, s'il te plait, avoir ici une copie de tout tes codes VBA?
Surtout ceux qui concernent :
1- le "chargement" du formulaire
2- les événements click

Au fait, lorsque tu dis "formulaire", s'agit il d'un UserForm???

Oui, formulaire = UserForm dans mon cas.

Je me suis trompé plus haut c'est ce que je faisais il y a quelques jours... Maintenant ça a changé.
Pour l'enregistrement, étant donné qu'au chargement de la page j'indique les différents ControlSource des contrôles, je n'ai pas besoin d'enregistrer les Value des contrôles dans la feuille Excel donc oubliez ça...

Bref ici le code pour le chargement des valeurs et propriété enabled des contrôles :
Code:
j = 3
    For Each ct In UserForm1.Controls
    If ct.Name = ActiveWorkbook.Sheets(1).Cells(j, 1) Then
            If TypeName(ct) = "Frame" Then
                j = j + 1
            ElseIf TypeName(ct) = "OptionButton" Then
                ct.ControlSource = "feuil1!b" & j
                j = j + 1
            ElseIf TypeName(ct) = "TextBox" Then
                ct.ControlSource = "feuil1!b" & j
                j = j + 1
            ElseIf TypeName(ct) = "ComboBox" Then
                ct.Text = ActiveWorkbook.Sheets(1).Cells(j, 2)
                j = j + 1
            End If
    End If
Next


Et un évènement sur un Click d'OptionButton :
Code:
frm5.Enabled = False
For Each ctrl In frm5.Controls
    ctrl.Enabled = False
Next
frm3_2_3.Enabled = False
For Each ctrl In frm3_2_3.Controls
    ctrl.Enabled = False
Next
frm3_2_4.Enabled = False
For Each ctrl In frm3_2_4.Controls
    ctrl.Enabled = False
Next
frm3_1_10.Enabled = False
For Each ctrl In frm3_1_10.Controls
    ctrl.Enabled = False
Next
frm4_11.Enabled = False
For Each ctrl In frm4_11.Controls
    ctrl.Enabled = False
Next
 

pijaku

XLDnaute Occasionnel
Re : Empêcher l'évènement "click" sur OptionButton

Effectivement, on avance bien...
Il n'est, à priori, pas possible de désactiver le clic qui mets tes optionbutton.enable false par l'intermédiaire de
Code:
If OptionButton1 = true Then Exit Sub
.
Je ne sais pas pourquoi.
Cependant, l'utilisation d'une variable boolean de portée publique (je crois) le permets.
Je te mets ici tout le code utilisé dans ce fichier exemple :
Code:
Option Explicit

Dim Test As Boolean

'bouton qui réinitialise tous les contrôles
Private Sub CommandButton1_Click() 
Dim ctrl As Control

For Each ctrl In Me.Controls
    ctrl.Enabled = True
    If TypeOf ctrl Is MSForms.OptionButton Then
        ctrl.Value = False
    End If
Next
Frame1.Enabled = True
For Each ctrl In Frame1.Controls
    ctrl.Enabled = True
Next
Frame2.Enabled = True
For Each ctrl In Frame2.Controls
    ctrl.Enabled = True
Next
End Sub

'procédure qui, au clic, rends les contrôles de la frame2 Enable
Private Sub OptionButton10_Click()
Dim ctrl As Control
If Test = True Then Exit Sub
Frame2.Enabled = False
For Each ctrl In Frame2.Controls
    ctrl.Enabled = False
Next
End Sub

'procédure qui, au clic, rends les contrôles de la frame1 Enable
Private Sub OptionButton4_Click()
Dim ctrl As Control
If Test = True Then Exit Sub
Frame1.Enabled = False
For Each ctrl In Frame1.Controls
    ctrl.Enabled = False
Next
End Sub

'procédure qui mets la variable Test à true
'en vue d'empêcher le clic sur les optionbutton 10 et 4
Private Sub OptionButton5_Click()
If OptionButton5 = True Then
    Test = True
Else
    Test = False
End If
End Sub

'procédure qui mets la variable Test à false
pour permettre le clic sur les optionbutton 10 et 4
Private Sub OptionButton6_Click()
If OptionButton6 = True Then
    Test = False
Else
    Test = True
End If
End Sub
 

MJ13

XLDnaute Barbatruc
Re : Empêcher l'évènement "click" sur OptionButton

Bonjour à tous

Mais je soupçonne notre ailette d'être novice en matière d'utilisation des forums Excel sur Internet.
Forumeuse débutante, elle n'a pas encore confiance en notre (ton) jugement.

C'est pourtant pas écrit dans son profil.

Celui (ou celle qui ne joint pas de fichier) , c'est comme si on travaillait à l'oeil ;). Et ça, c'est pas bien pour XLD. On a perdu assez d'experts à cause de cela :eek:.

Alors, avec un fichier, c'est plus simple pour tout le monde :).
 

laetitia90

XLDnaute Barbatruc
Re : Empêcher l'évènement "click" sur OptionButton

bonjour tous :):):):)
sans fichier exemple cela va être trés difficile de construire quelque chose de simple
ailete parle de 300 OptionButtons peut être une classe ??
en attendant un fichier exemple pour pas multiplier les posts a l'infini
 

ailete

XLDnaute Nouveau
Re : Empêcher l'évènement "click" sur OptionButton

Le code fonctionne, il n'effectue pas les actions sur le "Click" des optionbutton.
Mais, Excel s'arrête tout de même de fonctionner... Je trouve ça bizarre, surtout que si je supprime carrément les actions de l'évènement "Click" tout se passe sans embuche.

Peut-être qu'il faudrait que j'entre les propriétés ControlSource en dur de façon à ce que je n'ai pas à faire ma boucle
Code:
Foreach ctrl in UserForm.Controls
   OptionButton1.ControlSource = "feuil1!b" & i
Next

Qu'en pensez-vous?
Mais comme je disais, j'ai plus de 300 optionButton, et les faire à la main un par un ne m'attire pas vraiment. Je peux le faire via le code, mais est-il possible de sauvegarder l'état des propriétés des contrôles pour un formulaire dans ce cas?
 

pijaku

XLDnaute Occasionnel
Re : Empêcher l'évènement "click" sur OptionButton

Le code fonctionne, il n'effectue pas les actions sur le "Click" des optionbutton.
Donc la question posée est résolue.
Mais, Excel s'arrête tout de même de fonctionner... Je trouve ça bizarre, surtout que si je supprime carrément les actions de l'évènement "Click" tout se passe sans embuche. Peut-être qu'il faudrait que j'entre les propriétés ControlSource en dur de façon à ce que je n'ai pas à faire ma boucle
Peut être. Sans ton fichier, comme dit précédemment à plusieurs reprises, "peut être" est la seule réponse que nous puissions t'apporter.
Code:
Foreach ctrl in UserForm.Controls
   OptionButton1.ControlSource = "feuil1!b" & i
Next
Qu'en pensez-vous?
Peut être...
Mais comme je disais, j'ai plus de 300 optionButton, et les faire à la main un par un ne m'attire pas vraiment. Je peux le faire via le code, mais est-il possible de sauvegarder l'état des propriétés des contrôles pour un formulaire dans ce cas?
Si tu le fait par le code, tu ne peux pas enregistrer les propriétés des contrôles.
Par contre, si tu le fais manuellement, ces propriétés seront bien enregistrées.
Par contre, si tu le fais manuellement, ce sujet n'a plus lieu d'être.

Alors, pour la dernière fois (je pense) peux tu nous transférer une copie de ton fichier sans données confidentielles???
 

Statistiques des forums

Discussions
312 321
Messages
2 087 245
Membres
103 498
dernier inscrit
FAHDE