Resolution d'un exo sur VB

arnotti Messages postés 42 Date d'inscription lundi 6 avril 2009 Statut Membre Dernière intervention 21 juin 2010 - 16 avril 2010 à 13:06
 Chour - 1 févr. 2014 à 12:50
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

voila ce que j'ai fait

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

mais seul text1 est juste et tout fonctionne, mais text2 ne fonctionne pas,
le message d'erreur apparait pour n'importe quel nombre
Aidez moi a trouver l'erreur SVP

8 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
16 avril 2010 à 14:05
Bonjour,

Ì et Æ, c'est quoi ces noms de variables O.o ?
De base, on évite les variables accentuée ou avec des caractères spéciaux.

Ensuite, mets :
Option Explicit
en haut de ton module de code et déclare toutes tes variables.

Pour les conditions, toujours mettre des parenthèses :
If Ì < 16 Or Ì > 150 And Æ < 16 Or Æ > 150 Then
Quelles sont les associations ?
Ne sachant jamais, je mets toujours des parenthèses :
If (Ì < 16 Or Ì > 150) And (Æ < 16 Or Æ > 150) Then

Et là ça devrait passer.

Mon site
0
cs_GG29 Messages postés 326 Date d'inscription vendredi 23 décembre 2005 Statut Membre Dernière intervention 8 février 2011 17
16 avril 2010 à 14:09
Essaye de rajouter des parenthèses dans la condition
If (Ì < 16 Or Ì > 150) And (Æ < 16 Or Æ > 150) Then


PS : utilise la balise de code (3ème en partant de la droite)
---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
0
arnotti Messages postés 42 Date d'inscription lundi 6 avril 2009 Statut Membre Dernière intervention 21 juin 2010
16 avril 2010 à 14:27
c'est toujours la meme chose...
Rien ne fonctionne pour le text2 comme ca devrai, coe pour le text1
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 avril 2010 à 18:17
Salut,

Ben si déjà tu prennais en compte ce que je te disais sur ton post d'avant...
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
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 à 18:29
[^^sad1][^^sad1]
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
16 avril 2010 à 19:34
salut
c'est quoi ce code ?
je t'explique ton problème:

If Ì < 16 Or Ì > 150 And Æ < 16 Or Æ > 150 Then 's'il y a une erreur donc on affiche le msg d'erreur et on traite pas les elseif
msg = "error"
Style = vbCritical
MsgBox msg, Style
ElseIf Ì > 16 Or Ì < 150 Then 'si pas d'erreur et tout est bon sur texte1 on traite texte1
Text2.Text = (Text1.Text / 2) + 7
ElseIf Æ > 16 Or Æ < 150 Then 'ce dernier elseif : si pas d'erreur et pas de traitement pour texte1 on traite texte2 ce qui est impossible : si pas d'erreur ton code traitera texte1 sil y a une erreur ton code affiche un msg d'erreur donc tu arrivera jamais à traiter le dernier elseif
Text1.Text = 2 * (Text2.Text) + 7
End If





Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
Claiyah Messages postés 580 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 avril 2010 3
16 avril 2010 à 19:34
Oops j'ai oublié la balise:

If Ì < 16 Or Ì > 150 And Æ < 16 Or Æ > 150 Then 's'il y a une erreur donc on affiche le msg d'erreur et on traite pas les elseif
msg = "error"
Style = vbCritical
MsgBox msg, Style
ElseIf Ì > 16 Or Ì < 150 Then 'si pas d'erreur et tout est bon sur texte1 on traite texte1
Text2.Text = (Text1.Text / 2) + 7
ElseIf Æ > 16 Or Æ < 150 Then 'ce dernier elseif : si pas d'erreur et pas de traitement pour texte1 on traite texte2 ce qui est impossible : si pas d'erreur ton code traitera texte1 sil y a une erreur ton code affiche un msg d'erreur donc tu arrivera jamais à traiter le dernier elseif
Text1.Text = 2 * (Text2.Text) + 7
End If 



Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
salut, je penses que le 'and' de :
If Ì < 16 Or Ì > 150 And Æ < 16 Or Æ > 150 Then
doit etre remplacer par un 'Or', car avec le 'and' il faut qu'il y ait une erreur dans text1 et une dans text2. Alors qu'il suffit d'avoir une erreur dans un des 2.
0
arnotti Messages postés 42 Date d'inscription lundi 6 avril 2009 Statut Membre Dernière intervention 21 juin 2010
16 avril 2010 à 20:48
Si c'est impossible alors? l'exo lui meme ne doit pas exister??
0
Rejoignez-nous