Souci avec l'utilisation d'une combobox [Résolu]

Signaler
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
-
Bonjour

Je rencontre un souci dans l'utilisation d'une combobox dans un form qui effectue quelques calculs
Le probleme est simple mais je n'ai encore jamais utilisé de combobox et j'ai du mal a comprendre

Sur mon form, j'ai une textbox Appelée Q qui doit afficher par defaut "110" au démarrage de l'appli, ca c'est ok

Maintenant, Q va voir sa valeur modifiée selon 2 criteres charges dans une combobox
les 2 valeurs a mettre dans la combobox sont
"Transformé" et "non transformé"

Le but :
Si je selectionne "transformé" alors valQ = "110"
Si je selectionne " non transofrmé" alors ValQ = "0"

De plus, si je ne selectionne rien dans la combobox, alors ValQ = "110"

Voila, c'est peut être bête mais je n'y arrive pas tout seul

11 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut

Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
        If (DirectCast(sender, ComboBox).SelectedItem) = "transformé" Then
            TextBox1.Text = "110"
        End If
        If (DirectCast(sender, ComboBox).SelectedItem) = "Non transformé" Then
            TextBox1.Text = "0"
        End If
    End Sub


De plus, si je ne selectionne rien dans la combobox, alors ValQ = "110"


cela ne dépend pas du combo
dès que tu utilises le combo le textbox affiche
selon ton combo
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Bonjour Attila54,

Je n'ai guère vu une commande de "trésors et catacombres", bref...

Voici :



Et le code

Option Explicit On
Public Class Form1

  Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try ' calcul
      TextBox4.Text = CDbl(TextBox2.Text) - CDbl(TextBox1.Text) - CDbl(TextBox3.Text)
    Catch ex As Exception
      MsgBox("Saisie unvalide, remédier...  ", vbExclamation)
      TextBox2.Focus()
    End Try
  End Sub

  Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
    TextBox1.Text = "0"
  End Sub

  Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
    TextBox1.Text = "110"
  End Sub

End Class


Cordialement, Joe.
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Bonjour Attila,

Ok merci, alors pour la dédicace, en passant par le courrier email, une fois reçu, en indiquant son nom et son adresse postale et le type de dédicace désiréé, par retour du courrier il est possible de recevoir une dédicace à insérer en début d'ouvrage

Pour le code VB tu diras ?

Cordialement, Joe.
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Salut ShayW
J'ai juste eu a modifier le "=" par un "is" et tout fonctionne a merveille
encore merci
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Bonjour,

Ça n'entre pas dans l'Utilisation d'un combobox qui n'est pas fait pour alternet un état, mais d'un bouton (normal, radio, etc); soit :

Dim alternat As Boolean = 1
Form1_Load(...
 Call Button1_Click(sender, e)
End Sub

Sub Button1_Click(...
 alternat = not alternat
 Select Sase alternat
  Case 0: Textbox1.Text = "0"
  Case 1: Textbox1.Text = "110"
 End Select
End Sub


Cordialement, Joe.
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Bonjour Joe

Ben qu'utiliser pour alterner nu etat ?
Un radiobutton n'a qu'une case a cocher ou pas
Un button normal n'a rien du tout

Moi je voulais que les utilisateurs puissent cocher "transforme" ou "non transforme" et que textbox1 se remplisse avec les bonnes valeurs

sachant que par defaut la valeur selectionnee serait "transformé" (ce que je n'ai dailleurs pas pu gérer avec le combobox)

Une listbox serait elle plus adaptée ?
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Bonjour cher ami,

J'ai du mal à suivre ta logique, déjà tu semble faire un fixation sur la case à cocher (chekBox ou radioButton), as-tu une raison supérieure pour vouloir absolument une case à cocher ?

Ensuite, en gros, tu dis que tu veux une valeur par défaut V1 et une valeur optionnelle V2, donc il suffit bien d'un bouton, d'un choix, tu mets par defaut la valeur V1 dans le texteBox, et tu écris sur le bouton unique (Cliquer pour avoir V2), où est le problème, ça marche ainsi ?

Ou alors, mais tu n'en dis pas assez, ça suppose qu'on puisse revenir sur le choix, alors dan ce cas il faut trois objet avec ce principe (choisir V1 ou V2 par objet 1 et 2) puis valider le choix définitif par un troisième objet, eh oui...

En fait, mais point ne t'en offusque, manifestement tu as opté pour des objets sans bien en connaître leurs vertus, c'est comme si tu prenais un avion pour faire cinq cents mètres, c'est possible, mais le meilleur chois ce sont les pieds...

De facto, faudrait que tu définisses tes besoins et l'apparence que tu veux donner (si tu as une raison, sinon ne définis pas d'apparence), et ensuite il sera possible de te donner une réponse sur les objets les plus optimisés en fonction du cahier des charges...

Pour répondre sur la listeBox, non, le textBox est plus judicieux, en fait :

- Le comboBox est un affichage en liste qui "peut" permettre de la modifier par l'utilisateur, qui permet aussi d'astreindre l'utilisateur à un choix déterminé, par exemple si tu veux que ton utilisateur choississe des minutes (de 0 à 59), en les mettant dans un comboBox, c'est plus restrictif ergonomiquement parlant, mais tu n'auras pas derrière à verrifier la saisie comme si elle était dans un texte car tu prendra directement l'indice cliqué qui sera exactement celui des minutes.

- La listBox, quant à elle, elle ne permet pas de rajouter des éléments directement par l'utilisateur, mais on peut choisir comme le comboBox, en fait généralement on utilise la liste pour des texte plus longs, dont on veut facilement récupérer ce qui est sélectionné, car avec un texteBox c'est plus compliqué de récupérer et on ne peut pas cliquer.

- Le TextBox quant à lui est fait pour un affichage sans choix (ou c'est plus compliqué), on l'utilise pour l'information.

- Le bouton valide quelque chose, théoriquement il n'a qu'un état (mais on peut lui en donner plein), il valide quelque chose.

- Le CheckBox présente un autre intéret, il offre trois états (coché, décoché et grisé), donc on peut l'imaginer pour un grand nombre de choix "multiples".
- Le radioBouton présente la particularité sur une forme de n'en activer qu'un seul (radioBouton) par exclusion des autres qui s'éteignent, sauf si on les
isole par groupe dans une Frame (sous form).

* Généralement le check et le radio se valident définitivement ensuite par une bouton normal (principe microsoft), qui sépare les opération préalables de la validation.

Au plaisir, cordialement, Joe.
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Re Joe

Alors voila ce que j'aimerais avec dessins a l'appui

INITIALEMENT - FIGURE 1
- Au lancement du formulaire Le bouton "transforme" est allumé et le bouton "non transforme" est eteint
- La Textbox A affiche "110"
- On entre manuellement dans La textbox nommée B une valeur comprise entre 350 et 550

On appuie sur le bouton calcul
La valeur contenue dans le textbox C se calcule automatiquement (ca, ca fonctionne deja)
- La Textbox D affiche le résultat de l’opération 486 - 95 - 110

CHANGEMENT VIA LE BOUTON RADIO - FIGURE 2
Par un procédé que je n'arrive pas a de déterminer, on allume "Non Transforme" qui passe en vert pour l'exemple et on éteint "Transformé" qui devient rouge
on a alors
- La Textbox A affiche "0"
- La textbox nommée B garde sa valeur initiale (486)
- La textbox nommée C garde sa valeur initiale (95)
- La Textbox D affiche le résultat de l’opération 486 - 95

Ou plus simplement la valeur contenue dans D sera toujours ValB - ValC - ValA




Voila ce que j'aimerais dans l'absolu, mais pour moi qui débute, c'est un peu difficile !!!!!

Ais je été assez explicite sur ce que je voudrais obtenir ?

Merci
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

Bonjour Joe,
J'ai effectivement tarder a commander, en fait j’hésitais entre 2 romans
Voila qui est donc fait

Je teste tout de suite le code et je te remercie de ton aide

Ps : A quand la spéciale dédicace sur le livre ???

Merci encore pour l'aide
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

visiblement tout fonctionne a merveille

en fait toi tu traites le calcul avec message d'erreur si besoin est et ensuite tu mets des états a tes 2 button radio

pour le calcul tu convertis en doubles le contenu de tes textbox ... c'est si simple vu comme cela

mais par exemple, si je voulais avoir un etat deja coché au lancement du form, je pourrais faire un
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = "110"
        RadioButton2.Checked = True
        RadioButton1.Checked = False


et meme allez plus loin avec par exemple :
 Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        TextBox1.Text = "0"
        RadioButton1.ForeColor = Color.Green
        RadioButton2.ForeColor = Color.Red
    End Sub

    Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
        TextBox1.Text = "110"
        RadioButton1.ForeColor = Color.Red
        RadioButton2.ForeColor = Color.Green
    End Sub


et cela me mettrait d'emblée le bouton radio 2 allume avec un texte vert et le radio bouton 1 eteint avec un texte rouge non ??

en tout cas cela fonctionne super bien, exactement ce que j’espérais
Gros merci

Ps : Une question bête, tu sais les sortes de petites "LED" qui paraissent allumées en vert et éteintes en rouge comme de vraies ampoules sur certains sites , cela existe en VB ??
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
4
Attila,

Réponse,

En fait j'ai pris des double car je ne sais ce que tu veux en faire, alors dans le doute j'ai utilisé la grosse artillerie.

Pour le TRY de gestion d'erreur, c'est en cas où il te vienne l'idée de mettre des lettres dans les chiffres par exemple, comme je ne sais pas non plus, dans ce cas ça planterait dans les règles si la conversion ne pouvait se faire.

Normalement il est mieux de prendre des variables qui recopient les textes, puis de travailler ensuite avec ces dernières, mais en absence d'infos, idem...

Absolument pour l'état au démarrage, sauf qu'il suffit d'en mettre un seulement (radioButton), souviens toi : sur une même feuille, sauf code contraire, automatiquement un seul est allumé (c'est la caractéristique du radioButton).

Bon, ben a priori tu as compris...

Alors l'objet dont tu parle je ne connais pas mais regardes du cpoté d'OvalShape, tu devrais pouvoir y trouver ton bonheur avec ses propriétés...

Parce que bien entendu, on peut dessiner ce qu'on veut, mais il faut faire ça avec l'objet graphique et les math (sinus, cosinus, radian)...
Exermple ici :


Cordialement, Joe.