Modifier une commande suivant l'index d'OptionButton [Résolu]

Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
- - Dernière réponse : cs_JLB59
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
- 9 août 2012 à 17:43
Bonjour à tous,

Voudriez-vous me dire comment faire quand on clique sur un OptionButton pour mettre à "True" un bouton de commande.
Au lancement, ce bouton est disabled.

    Private Sub Form_Load()
'************************************************
LblTrancheAge.Caption = "Choisis ta tranche d'âge !"
LblTrancheAge.BackColor = vbYellow
    
    For I = 0 To 2
        OptTrancheAge(I).BackColor = vbCyan
        cmdEnregistrer.Enabled = False
    Next I

    If OptTrancheAge(Index) = Checked Then
        cmdEnregistrer.Enabled = True
    End If
...


Merci de votre aide.
Cordialement. JLB59
Afficher la suite 

20/22 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Bonjour,
Sous quoi développes-tu ?
Car si sous VB6, puisque la présente section est :
Forum > Visual Basic 6

Je ne connais pas cette propriété (Checked) pour un optionbutton sous VB6 !
Sous VB6, Checked est une propriété d'une "check Mark" dans un menu ! Rien à voir avec les optionbuttons.
Cela te dérangerait-il de regarder dans ton aide VB6 les propriétés d'un OptionButton ? (car ta question est là plus que rudimentaire, hein ...) . L'une de ces propriétés est celle qui te convient et elle est exposée avec la plus grande clarté !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Clarté ! C'est pas évident !

Ah bon !
Pour moi, oui !
Et c'est bien la propriété Value, hein !
et voici ce qu'on lit (mon aide en en anglais) pour la propriété value :
CheckBox and OptionButton controls ? returns or sets the state of the control.
.....
....
OptionButton control ? True indicates the button is selected; False (default) indicates the button isn't selected.

je serrais curieux de savoir ce qui, là-dedans, n'est pas évident pour toi !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Quant à :

y a pas d'erreur puisque c'est reconnu


ce qui veut dire que tu ne travailles pas en option explicit et que donc, checked est intyerprété comme une variable et que donc (puisque non initialisée) elle est égale à 0 et que, comme 0 est la valeur de False, ma foi, etc... etc ...
Voilà ce qui arrive lorsque l'on veut brûler les étapes ! on se brûle, certes, mais les ailes !
Tu vois ? ..

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
ce qui veut dire que tu ne travailles pas en option explicit

Non, parce qu'en principe, y a pas à la faire puisque c'est un objet ?

Que te dire ? Sinon, là encore : "ouvre ton aide VB6 sur cette rubrique.
Qu'une variable soit ou non une variable objet n'a rien à voir là-dedans !
Option Explicit te force à déclarer tes variables. Si tu l'avais utilisée, ta variable checked eût été dénoncée . Et à propos : ta variable checked n'est pas un objet, non !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
3
Merci
Je ne vois aucune erreur dans le code montré, mais seulement si :
- tu développes bien sous VB6. Tu aurais en effet )par contre une erreur du type que tu indiques ... sous ... VBA Mais tu as laissé cette question sans réponse
VBA ? qui ne connait pas les groupes de contrôles indexés (et tout ton code ne "tiendrait" alors plus du tout) !
- tu as bien (sous VB6, donc) un groupe d'optionbuttons nommé OptTrancheAge et que les index 0, 1 et 2 existent bien dans ce groupe indexé.
- cmdEnregistrer est un contrôle existant sur ton Form et doté de la propriété Enabled
Voilà voilà !
_______________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
3
Merci
Que veux-tu que je te dises ?
Je te répète que ton code marche parfaitement

Bien-sur qu'il marche, mal peut-être mais il marche !

Alors, pour ne plus avoir de prb, j'ai fait ceci , et ça marche encore mieux.
Private Sub OptTrancheAge_Click(Index As Integer)
    For I = 0 To 2
        If OptTrancheAge(I).Value Then
          cmdEnregistrer.Enabled = True
        End If
    Next I
End Sub



Ce que tu m'as expliqué est parfaitement juste au sujet des index (c'est le 2 qui a la main) !
Je pensais aussi à la même chose, c'est pour ça que j'ai quelque peu modifié le code.

Donc, je peux conclure que cette affaire est classée.

Je te remercie beaucoup de ta patience et ton aide.

A bientôt (j'espère pas si pas de prb!) ucfoutu
Cordialement. JLB59

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 138 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_JLB59
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
Bonsoir,

Moi non plus, je l'ai pas vu dans les propriétés, mais apparemment, y a pas d'erreur puisque c'est reconnu.
Maintenant, c'est de savoir comment on peut se servir de ça !!!

J'ai déjà regardé dans l'aide, mais y a rien de bien probant pour ce qui me préoccupe. En clair, y a même pas d'exemples pour voir.

Maintenant, j'ai peut-être confondu "Checked" et "Value". Je vais essayer avec ça !

Merci beaucoup de ton aide.

Je ne connais pas cette propriété (Checked) pour un optionbutton sous VB6 !
Sous VB6, Checked est une propriété d'une "check Mark" dans un menu ! Rien à voir avec les optionbuttons.
Cela te dérangerait-il de regarder dans ton aide VB6 les propriétés d'un OptionButton ? (car ta question est là plus que rudimentaire, hein ...) . L'une de ces propriétés est celle qui te convient et elle est exposée avec la plus grande clarté !

Clarté ! C'est pas évident !

Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
Bonjour ucfoutu,

je serrais curieux de savoir ce qui, là-dedans, n'est pas évident pour toi !
Comme tu dis, ton aide est en anglais, moi je l'ai en français et pour moi c'est mieux, mais un exemple aurait été plus explicite pour moi (en principe), mais y avait rien !
Je ne sais pas exactement ce qu'il faut saisir dans l'index des recherches, mais avec "OptionButton", je n'ai pas eu l'explication qui m'intéressait.
Voilà l'aperçu de l'aide :
[i]Remarques

Les contrôles OptionButton font généralement partie d'un groupe proposant à l'utilisateur plusieurs options dont il ne peut sélectionner qu'une seule. Pour regrouper ces contrôles, il est possible de les dessiner à l'intérieur d'un conteneur tel qu'un contrôle Frame ou PictureBox ou une feuille. Pour regrouper des contrôles OptionButton dans un contrôle Frame ou PictureBox, commencez par dessiner le contrôle Frame ou PictureBox, puis dessinez les contrôles OptionButton dans le conteneur ainsi créé. Tous les contrôles OptionButton situés dans le même conteneur se comportent comme un groupe.

Bien que les contrôles OptionButton et CheckBox semblent fonctionner de manière similaire, il existe entre eux une différence importante : lorsqu'un utilisateur sélectionne une case d'option, les autres cases du même groupe sont automatiquement désactivées, ce qui n'est pas le cas des cases à cocher, dont l'utilisateur peut sélectionner un nombre illimité./i
Bon, c'est explicite, soit, mais comme je voudrais faire quelque chose de bien précis, sauf erreur, je n'ai pas trop de renseignements.
Et pourtant, c'est tout simple hein !
Mais ça va venir, je dois simplement trouver les bonnes syntaxes, écritures et tests !

Et c'est bien la propriété Value, hein !
C'est exact et je me suis servi de ça.
Maintenant que j'aie la bonne syntaxe, il me suffit d'essayer de la mettre en application. Pour l'instant, ça marche pas trop, mais ça va venir.

ce qui veut dire que tu ne travailles pas en option explicit
Non, parce qu'en principe, y a pas à la faire puisque c'est un objet ?
Je vais être franc avec toi, je m'y perds un peu car j'ai tendance à mélanger les torchons et les serviettes !


Voilà ce qui arrive lorsque l'on veut brûler les étapes ! on se brûle, certes, mais les ailes !
Ouai ! T'as parfaitement raison ! Mais comme mon prog est pratiquement terminé, il n'y avait que ça à rajouté et j'ai peut-être voulu aller trop vite !

Quoiqu'il en soit, tes explications m'ont éclairées un peu et je vais me baser sur ça.

Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
J'ai oublié de te demande ucfoutu,

Je t'avais dis que je sais pas trop la bonne syntaxe à mettre, la preuve :
Private Sub OptTrancheAge_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    For I = 0 To 2
        If OptTrancheAge(I).Value = True Then
          cmdEnregistrer.Enabled = False
        Else
          cmdEnregistrer.Enabled = True
        End If
    Next I
End Sub
Pas moyen de lancer l'appli, j'ai cette erreur :

Tu me parlais de déclaration tout à l'heure, ben là, je suis en plein dedans !

Veux(tu me dire ce que je dois faire ?

Merci de ton aide.

Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
Comme quoi ucfoutu !
Voilà ce que j'ai fait :
Private Sub OptTrancheAge_Click(Index As Integer)
    For I = 0 To 2
        If OptTrancheAge(I).Value = True Then
          cmdEnregistrer.Enabled = False
        Else
          cmdEnregistrer.Enabled = True
        End If
    Next I
End Sub


Bon, là, il n'y a que "I" de déclarer
Public I As Integer

Apparemment, c'est bon mais je n'ai que 2 optionbuttons sur 3 qui réagissent ???
Alors là, va savoir pourquoi ?
Parce que le compteur comptabilise bien 3 valeurs , 1 pour chaque optionbutton !


Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
tu as bien (sous VB6, donc) un groupe d'optionbuttons nommé OptTrancheAge et que les index 0, 1 et 2 existent bien dans ce groupe indexé.
- cmdEnregistrer est un contrôle existant sur ton Form et doté de la propriété Enabled
Voilà voilà !

Je suis bien sous VB6, j'ai voulu mettre VB.NET mais ça ralentissait considérablement le PC, alors, je suis revenu à l'ancienne version.

Oui mais est-ce que tu pourrais me dire pourquoi je n'ai que 2 OptionButtons qui réagissent quand je les clique (les 2 premiers) ?

Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Que veux-tu que je te dises ?
Je te répète que ton code marche parfaitement. Encore faudrait-il savoir ce que tu cherches à faire !
Voilà ce que tu lui demandes présentement (et qu'il fait)
par ton code :

For I = 0 To 2 ' donc tu examines successivement chaque optionbutton (d'index 0, pui 1, puis 2
If OptTrancheAge(I).Value = True Then
' et comme le 2 sera le dernier à "parler", c'est lui qui l'emportera
' et ton bouton ne sera donc habilité que si le optionbutton(2) est à true
' et inhibé dans tous les autres cas, bien évidemment
cmdEnregistrer.Enabled = False
Else
cmdEnregistrer.Enabled = True
End If
Next I

Tu as là un problème de comptréhension même de ce que tu veux !
Explique donc la finalité, avec précision !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Pour que tu comprennes bien qu'il ne s'agit pas d'un problème de syntaxe, mais d'un problème de "pensée" :
Regarde ce que tu fais (les msgboxes te le diront) :

Private Sub OptTrancheAge_Click(Index As Integer)
    MsgBox "optionbutton(" & Index & ") est à " & OptTrancheAge(Index).Value
    For I = 0 To 2
        MsgBox "optionbutton(" & I & ") est à " & OptTrancheAge(I).Value
        If OptTrancheAge(I).Value = True Then
          cmdEnregistrer.Enabled = False
        Else
          cmdEnregistrer.Enabled = True
        End If
    Next I
End Sub


On s'écrate là du développement en soi, pour "coller" au mécanisme seul de la pensée, hein !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Ouai ?
Avec ce que tu as écrit, autant écrire (pour le même résultat et sans boucle aucune ) :
Private Sub OptTrancheAge_Click(Index As Integer)
    If OptTrancheAge(2).Value Then
          cmdEnregistrer.Enabled = True
    End If
End Sub

Gné ???!!!
Tu en es exactement au même point, ami (celui de ta propre pensée) !





________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
Gné ???!!!
Tu en es exactement au même point, ami (celui de ta propre pensée) !


Je comprends pas trop là ! Désolé ! Surtout "Gné ???!!!".
C'est vrai qu'avec mon 1er code, comme tu l'as dis, il n'y avait que la fin de boucle qui était prise en compte.

En tout cas, avec ma nouvelles écriture, quand je lance l'appli, cmdEnregister est Disabled, et il n'y a que quand j'ai cliqué sur un OptionButton (j'ai renommé OptTrancheAge)) qu'il est Enabled, donc, accessible.

Comme j'ai 3 calculs différents, en sélectionnant un OptionButton, le calcul est choisi en conséquence.
J'avais fait un arrêt sur le mode de calcul avec les 3 conditions, et pour chacune d'elles ça se faisait bien !


J'ai essayé le code que tu as mis, c'est vrai que de cette manière, il y avait un os quelque part. C'est pourquoi je n'arrivais pas à le faire marcher !

Donc, j'ai modifié mon code comme je te l'avais dit :
Private Sub OptTrancheAge_Click(Index As Integer)
    For I = 0 To 2
        If OptTrancheAge(I).Value Then
          cmdEnregistrer.Enabled = True
        End If
    Next I
End Sub
Je sais pas si la syntaxe est juste, toujours est-il que ça marche de cette manière !

Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Je sais pas si la syntaxe est juste, toujours est-il que ça marche de cette manière !
Rhoooo !
Relis mon dernier message. Si tu es "content" des résultats de toin code, même pas besoin de boucle ! tu peux directement tester sur l'index 2 !
Mais bon ... Je te laisse là, maintenant, car trop, c'est trop ! Désolé, mais ce sera ainsi.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
140
Date d'inscription
jeudi 21 septembre 2000
Statut
Membre
Dernière intervention
16 août 2012
0
Merci
J'ai bien compris ton dernier msg, c'est pour ça que j'ai essayé une autre manière de faire.
Toi, dans ton code, enfin le mien, tu avais mis "...value = True", et dans mon dernier code, j'ai enlevé le "True".
Pour moi, dans ma petite tête, c'est quand l'OptionButton est validé qu'il devient "True", parce que, si je ne dis pas (enfin plus) de bêtises, la valeur par défaut est "False".

Si j'ai tout faux, alors je me demande pourquoi ça fonctionne bien et que chaque choix est bien pris en compte !!!

Il faut que je précise qu'une fois un OptionButton validé, les autres sont "Disabled".
Mais là encore, c'est pas au point !

Cordialement. JLB59
Commenter la réponse de cs_JLB59
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Il faut que je précise qu'une fois un OptionButton validé, les autres sont "Disabled"

tu veux dire "coché" (pas validé). Et bien évidemment, puisque c'est la fonctionnalité principale des optionbuttons.
Rien àç voir azvec ce que je t'ai dit et redit. Seul celui d'index 2 est pris en compte avec tonj code !
Bye.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Tu feras mieux de dire ce que tui veux obtenir, avec précision. Et tu auras alors le code précis pour y parvenir. Qyu'on en termine avec ce "machin".


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
Si (bien que tu ne l'aies pas dit) u veux finalement forcer les tois optionsbuttons à non cochés au départ et n'habiliter le commandbutton que si l'uin d'entre eux a été coché, on a tourné en rond pour peu de choses. Tu l'aurais dit ===W>> et voilà ===>>

Private Sub Form_Activate()
  cmdEnregistrer.Enabled = False
  For i = 0 To 2
    OptTrancheAge(i).Value = cmdEnregistrer.Enabled
  Next
End Sub

Private Sub OptTrancheAge_Click(Index As Integer)
    For i = 0 To 2
      If OptTrancheAge(i) = True Then
        cmdEnregistrer.Enabled = True: Exit For
      End If
    Next i
End Sub


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu