Exercice sur vusual basic

arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010
- 16 avril 2010 à 09:26
cs_christoni
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
- 16 avril 2010 à 18:05
Bonsoir
Aidez moi a faire cet exercice

Deux textbox AgeF et AgeM
Une commande OK
les ages compris entre 16 et 150 si non message "erreur"
Si AgeF donner alors AgeM = 2(ageM-7)
Si AgeM donner alors AgeF = (ageF/2) + 7
Merci de me donner le code pour la comande OK

15 réponses

cs_vpoyo
Messages postés
363
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
20 avril 2010
5
16 avril 2010 à 09:34
et si on fait l'exercice on a le droit à un bon point ?

Le but de l'exercice est d'apprendre, et par toi même.

Ensuite si tu bloques, montres ce que tu as fais, et on te diras tes erreurs.
0
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 09:37
voila ce que j'ai fait


Private Sub CmdOK_Click()
Ì = Val(Text1.Text)
Æ = Val(Text2.Text)
If Ì < 16 Or Ì > 150 Or Æ < 16 Or Æ > 150 Then
msg = "error"
Style = vbCritical
MsgBox msg, Style
ElseIf Ì > 16 Or Ì < 150 Then
Text2.Text = (Text1.Text / 2) + 7
ElseIf Æ > 16 Or Æ < 150 Then
Text1.Text = 2 * (Text2.Text) + 7
End If
End Sub

ca fontionne seulement si les deux case contiennent des nombres,
le message erreur apparait meme quand je laisse les textbox vide.
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
16 avril 2010 à 09:54
Salut,

Il te suffit de tester le contenu des textbox :
Private Sub CmdOK_Click() 
if (Text1.Text <> "" Or Text2.Text <> "") Then
  Ì = Val(Text1.Text) 
  Æ = Val(Text2.Text) 
  If Ì < 16 Or Ì > 150 Or Æ < 16 Or Æ > 150 Then 
    msg = "error" 
    Style = vbCritical 
    MsgBox msg, Style 
  ElseIf Ì > 16 Or Ì < 150 Then 
    Text2.Text = (Text1.Text / 2) + 7 
  ElseIf Æ > 16 Or Æ < 150 Then 
    Text1.Text = 2 * (Text2.Text) + 7 
  End If 
End If
End Sub


Attention aussi de mettre des noms de variables explicites et sans caractères spéciaux, ca t'évitera des erreurs futures...
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
16 avril 2010 à 09:59
Si AgeF [manquerait pas un morceau ici ?] donner alors AgeM = 2(ageM-7)

---
VB.NET is good ... VB6 is better
0

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

Posez votre question
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 10:06
DARKSIDIOUS
tu as soigner une erreur: celle dont le message erreur apparait quand les cases sont vides
Mais ca fontionne pas toujours quand l'une ou l'autre est vide
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
16 avril 2010 à 10:26
Salut,

Oui, au temps pour moi, il ne teste que si les deux sont vides, modifier ainsi :
Private Sub CmdOK_Click() 
if (Text1.Text <> "" and Text2.Text <> "") Then
  Ì = Val(Text1.Text) 
  Æ = Val(Text2.Text) 
  If Ì < 16 Or Ì > 150 Or Æ < 16 Or Æ > 150 Then 
    msg = "error" 
    Style = vbCritical 
    MsgBox msg, Style 
  ElseIf Ì > 16 Or Ì < 150 Then 
    Text2.Text = (Text1.Text / 2) + 7 
  ElseIf Æ > 16 Or Æ < 150 Then 
    Text1.Text = 2 * (Text2.Text) + 7 
  End If 
End If
End Sub

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 10:40
rien ne fonctionne plus
au contraire pour ceci

Private Sub CmdOK_Click()
If (Text1.Text <> "" Or Text2.Text <> "") Then
Ì = Val(Text1.Text)
Æ = Val(Text2.Text)
If Ì < 16 Or Ì > 150 And Æ < 16 Or Æ > 150 Then
msg = "error"
Style = vbCritical
MsgBox msg, Style
ElseIf Ì > 16 Or Ì < 150 Then
Text2.Text = (Text1.Text / 2) + 7
ElseIf Æ > 16 Or Æ < 150 Then
Text1.Text = 2 * (Text2.Text) + 7
End If
End If
End Sub

Seul pour text1 que les conditions sont reunis
mais pour pour text2 rien le message "erreur" apparait a tous les coups
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
16 avril 2010 à 10:47
Salut,

Je t'ai juste corrigé ton erreur d'exécution, après je t'ai pas forcément corrigé ton algorithme...

Il t'affiche erreur si text1 est inférieur à 16 ou supérieur à 150 ou si text2 est inférieur à 16 ou supérieur à 150, si tu rentres 100 dans text1 et text2, il ne t'affichera plus "erreur", mais là c'est un problème de ton algo, pas de vb.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
16 avril 2010 à 10:51
C'est normal si je vois des noms de variables un peu bizarres ?
---
VB.NET is good ... VB6 is better
0
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 10:53
l'exo me demande que si je donne une valeur a text2 compris entre 16 et 150 alors text2 doit faire appaitre le resutat de la valeut de text1 diviser par 2 et plus 7.
et si je donnais a text1 alors text2 sera 2 fois text1 et moin 7
avec un message d'erreur si les valeur ne sont pas comprise entre 16 et 150
Peux tu me le resoudre ??
0
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 10:55
une petite erreur
voila sans erreur

l'exo me demande que si je donne une valeur a text2 compris entre 16 et 150 alors text1 doit faire appaitrele resultat de loperation: valeur de text1 diviser par 2 et plus 7.
et si je donnais a text1 alors text2 sera egal a 2 fois text1 et moin 7
avec un message d'erreur si les valeur ne sont pas comprise entre 16 et 150
Peux tu me le resoudre ??
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
16 avril 2010 à 11:03
Salut,

Ce n'est pas à moi de te résoudre ton problème, mais à toi d'y réfléchir, sinon ce n'est pas un exercice...

C'est à toi d'apprendre le langage et l'algorithmique, pas à nous de faire des exercices à ta place.

Si on te donne la réponse, tu n'y aura rien gagné.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 11:06
j'ai une erreur que je n'arrive pas a corriger
le fait qu'un seul textbox repondent au conditions
s'il s'agissai d'un seul textbox, j'aurais lontemps deja fini
depuis hier je trebuche
0
arnotti
Messages postés
42
Date d'inscription
lundi 6 avril 2009
Statut
Membre
Dernière intervention
21 juin 2010

16 avril 2010 à 11:34
aidez moi svp
j'aimerais juste savoir ce qui me fait defaut dasns ce code pour cet exercice


Private Sub CmdOK_Click()
If (Text1.Text <> "" Or Text2.Text <> "") Then
Ì = Val(Text1.Text)
Æ = Val(Text2.Text)
If Ì < 16 Or Ì > 150 And Æ < 16 Or Æ > 150 Then
msg = "error"
Style = vbCritical
MsgBox msg, Style
ElseIf Ì > 16 Or Ì < 150 Then
Text2.Text = (Text1.Text / 2) + 7
ElseIf Æ > 16 Or Æ < 150 Then
Text1.Text = 2 * (Text2.Text) + 7
End If
End If
End Sub
0
cs_christoni
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
16 avril 2010 à 18:05
bonjour,
c'est normal que ce bout de code ne fonctionne pas pour la deuxième textbox, car le premier "if" analyse la première et si elle est vide, toute entrée dans la seconde provoquera une erreur.
En résumé l'appli doit savoir quelle est la textbox à traiter.
Pour ma part j'utiliserais le "Validating" des textbox dans le sens suivant :
    Private Sub Text1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) _
            Handles Text1.Validating

        Ì = Val(Text1.Text)

        If (Ì < 16 Or Ì > 150) Then
            msg = "error"
            style = vbCritical
            MsgBox(msg, style)
        Else
            Text2.Text = CStr((Ì / 2) + 7)
        End If
    End Sub

C'est vrai que les noms de tes variables sont drôles et je ne sais pas si la proc. "CmdOK" est incontournable dans ton application.
0