Système d'aléatoire ne fonctionne pas

Fermé
6egirl Messages postés 7 Date d'inscription lundi 17 juillet 2017 Statut Membre Dernière intervention 30 octobre 2017 - Modifié le 30 oct. 2017 à 09:49
Whismeril Messages postés 19013 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 avril 2024 - 1 nov. 2017 à 20:59
Bonjour, dans mon logiciel j'ai mis deux textbox, et un bouton. Ce que je veux dire à mon logiciel c'est quand par exemple il y a un "1" écrit dedans, alors si j'appuie sur le bouton dans l'autre textbox ça charge une valeur entre 1 et 9.
Sauf que quand j'appuie ça ne fait rien


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim b As New Random
        Dim X As Integer
        For X = 1 To 1
            Select Case TextBox2.Text
                Case TextBox2.Text = "1"
                    TextBox6.Text = (b.Next(1, 9))
                Case TextBox2.Text = "2"
                    TextBox6.Text = (b.Next(1, 99))
                Case TextBox2.Text = "3"
                    TextBox6.Text = (b.Next(1, 999))
                Case TextBox2.Text = "4"
                    TextBox6.Text = (b.Next(1, 9999))
                Case TextBox2.Text = "5"
                    TextBox6.Text = (b.Next(1, 99999))
                Case TextBox2.Text = "6"
                    TextBox6.Text = (b.Next(1, 999999))
                Case TextBox2.Text = "7"
                    TextBox6.Text = (b.Next(1, 9999999))
                Case TextBox2.Text = "8"
                    TextBox6.Text = (b.Next(1, 99999999))
                Case TextBox2.Text = "9"
                    TextBox6.Text = (b.Next(1, 999999999))
            End Select
        Next
    End Sub

5 réponses

Whismeril Messages postés 19013 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 avril 2024 926
30 oct. 2017 à 08:06
Bonjour

simplement en lisant l'aide en ligne sur la fonction Select Case, tu devrais comprendre ton erreur.
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/select-case-statement

Si après la lecture, de cet article, tu n'as pas compris, revient expliquer ce que tu as écrit et les différences par rapport à l'aide.

D'autre part une boucle For qui compte de 1 à 1, ça ne sert pas à grand chose.

Enfin au final, tu n'as pas besoin de select case.
1 correspond à 9, 9 c'est 10-1, et 10 c'est 1 avec 1 0.
2 correspond à 99, 99 c'est 100-1 et 100 c'est 1 avec 2 0
...
0 correspond à 999999999, 999999999 c'est 1 000 000 000 et 1 000 000 000 c'est 1 avec 9 0.

De cet constatation tu peux extraire un calcul 100% mathématique sur une ligne permettant d'obtenir ton maximum.


0
6egirl Messages postés 7 Date d'inscription lundi 17 juillet 2017 Statut Membre Dernière intervention 30 octobre 2017
30 oct. 2017 à 12:43
Alors finalement entre temps j'ai complètement refais le code du logiciel, donc voici ce que j'ai mis à la place :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextBox2.Text = "1" & Label4.Text = "+" & TextBox1.Text = Label3.Text + Label5.Text Then
Label3.Text = Rnd() + 8
Label5.Text = Rnd() + 8
Label4.Text = Rnd() + 3
End If
End Sub

Quasiment tout marche sauf : Je ne sais pas comment dire dans la condition pour la textbox1.text = La somme de label3 et de label5. Du coup bah j'ai mis & TextBox1.Text = Label3.Text + Label5.Text Mais ça marche pas quoi...
0
Whismeril Messages postés 19013 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 avril 2024 926
30 oct. 2017 à 13:00
Entre temps tu as entièrement refait ton logiciel?
Tu poses ta question à 1h, je te réponds à 8h, j'espère que t'as pas refait 10 000 lignes pour ce petit problème....

Il n'empêche que tu as mal écrit ton select case, il te sera donc profitable de comprendre pourquoi.

Il te sera aussi profitable de savoir optimiser ton code, et un peu de maths n'a jamais fait de mal à personne.
Bon si tu pseudo veut dire que tu es en 6eme, en France (en Belgique, ils comptent dans l'autre sens, plus logique au fond), tu n'as peut être pas encore vu l'outil mathématique utile, et selon je t'aiderai un peu plus.
Mais la meilleure des aides est de te faire réfléchir et pas te donner la solution toute cuite.

Quand à ton nouveau code, j'en ai pas la moindre idée car j'ignore ce que contiennent TextBox1.Text, Label3.Text et Label5.Text.

Au passage il est conseillé de donner des noms explicites aux contrôles (avec un petit code pour le type et un nom selon son utilisation), c'est plus simple à coder et surtout à maintenir. Si tu dois corriger un bug dans un an ou plus, il sera plus facile de savoir que tbxPrenom (par exemple) est un TextBox servant à la saisie d'un prénom que TextBox22.
0
Whismeril Messages postés 19013 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 avril 2024 926
30 oct. 2017 à 13:01
Au fait, merci à Crapoulou d'avoir corrigé ton message pour le rendre plus lisible.
Pour la suite, tache d'utiliser la coloration syntaxique, voir ici la procédure.
0
6egirl Messages postés 7 Date d'inscription lundi 17 juillet 2017 Statut Membre Dernière intervention 30 octobre 2017
30 oct. 2017 à 22:49
Alors comment dire j'ai bien avancé sur le logiciel j'ai réglé quelques petits soucis mais y'a des trucs que je comprends pas trop comme :

J'ai mis un timer, puis un bouton et textbox, je voulais dire pour modifier le timer sans trop m'embêter :
If textbox6.text="1000" then 
timer1.interval="1000"
end if 


Ou alors un truc comme :
Timer1.interval=textbox6.text


Sauf que ça ne fait rien pourtant ça me dit pas qu'il y a une erreur dans mon code?... Du coup j'ai crée plusieurs timer mais je sais pas pourquoi ça marche pas
0
Whismeril Messages postés 19013 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 avril 2024 926
31 oct. 2017 à 08:01
Si tu passes du coq à l'ane, on ne va pas y arriver...

pourtant ça me dit pas qu'il y a une erreur dans mon code

ceci
Case TextBox2.Text = "1"
chez moi, ça ne compile pas.

Mais si j'en crois ton premier message, chez toi si.
Et pourtant ton erreur initiale venait de là. (Y as tu au moins regarder?)

Et ça non plus ça ne compile pas.


Cela peut dépendre de certaines options de compilation, pour éviter ces compilations douteuses, il y suffit de rendre ton compilateur plus vigilant.
Mais j'aurais préféré te le faire comprendre par toi même en réglant tes soucis les uns après les autres.

Donc je te les jette en vrac, sans plus d'explications, mais tu risques de voir du rouge partout dans ton code.
Option Strict On
Option Explicit On
et désactive la référence à Microsoft.VisualBasic, c'est le début des bonnes habitudes.



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
1 nov. 2017 à 13:21
Bonjour,

Suggestion :

Renseigne toi sur les objet fortement typé bindé (connecté).
Dans la programmation, il serait souhaitable
de transféré les valeurs de tes TextBox dans un objet.

En fait le but, est de ne modifier les TextBox que dans une seule
méthode. Ce principe se nomme l'encapsulation des données.

Si tu commence à modifier la valeurs de tes TextBox un peu partout
dans un programme, tu risque de te perdre si celui-ci devient complexe.

Dans un monde idéal, tu devrais travaillé avec un objet de "binding".
Tu créé un objet fortement typé qui est "bindé" sur tes contrôles.

Lorsque tu commenceras a effectuer du contrôle sur ton formulaire,
contrôle à la saisie je veux dire, tu comprendras qu'il n'est pas souhaitable
de modifier directement ces contrôles.

K
0
Whismeril Messages postés 19013 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 avril 2024 926
1 nov. 2017 à 20:59
Bonsoir,

avant de s'attaquer au binding, il faut qu'elle apprenne les bases.
Y'a un peu de travail.
0