Probléme de code VB6

stefen -  
williom Messages postés 230 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voila j'ai tenter un code en vb 6 mais il ne marche pas et je ne voie pas mon erreur a chaque fois que j'entre une valeur exemple 166 il me met montant de la franchise 150 ce qui n'est pas normal car pour 166 il devrais faire 166*0.1 quelqu'un a une idée ??? de pb


Option Explicit


Sub main()
Dim mtf As String
Dim mtr As String

mtr = InputBox("saisir montant des réparations :")

mtf = (mtr * 0.1)

If mtf >= 150 Then
MsgBox ("le mt de la franchise est de : " & mtf)
ElseIf mtf >= 600 Then
MsgBox ("le mt de la franchise est de : " & 600)
Else: MsgBox ("le mt de la franchise est de : " & 150)

End If
End Sub
A voir également:

7 réponses

toto
 
Tant mieux si tu es content mais ce programme est faux et archi illogique

La franchise est divisée par 10 quand on passe de 149 à 150
le cas >=600 n'est JAMAIS traité.

avec 149, le montant de la franchise est de 150
avec 150, le montant de la franchise est de 15
avec 1000, le montant de la franchise est de 100
avec 10000, le montant de la franchise est de 1000

Si c'est bien ça que tu veux ...
1
toto
 
Bonjour

C'est parfaitement normal au contraire.
166*0,1, ça fait 16.6
çà n'est pas plus grand que 150, donc le 1er Msgbox est ignoré

çà n'est pas plus grand que 600, donc le 2nd Msgbox est ignoré
Il reste le 3ème

Au passage, des choses étonnantes dans ton programme :
si mtf est >= 6000, tu n'afficheras jamais 600
Pourquoi concaténer 2 chaines constantes : "le mt de la franchise est de : " & 150, autant écrire directement "le mt de la franchise est de : 150"
0
stefen
 
mais non ce que je cherche a fair c'est calculer le montant de la franchise donc si le montant des ses réparations sont de 166 il devrais avoir de la franchise il devrais en avoir 166*0.1 donc j'ai du me tromper qq part mais ou???
0
williom Messages postés 230 Date d'inscription   Statut Membre Dernière intervention   51
 
bonjour,

dans un premier temps, déclare tes variables en Double, car ce ne sont pas des chaines de caractères, mais des nombres...

Dim mtf As Double
Dim mtr As Double

je ne vois pas d'erreur de traitement : 166*0.1= 16.6 donc ce n'est ni supérieur à 150 ni supérieur à 600 donc çà execute ton "else". La première condition ne serait pas plutôt " if (mtf <= 150) then " ?

ou alors le test ne serait-il pas à faire sur le montant : mtR ?
0
stefen
 
oui oui j'avais vu pour string je l'ai modifier merci mais marche tj pas
0
williom Messages postés 230 Date d'inscription   Statut Membre Dernière intervention   51
 
le test est à faire sur mtr :

if mtr >=150 then
0

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

Posez votre question
williom Messages postés 230 Date d'inscription   Statut Membre Dernière intervention   51
 
allez zou !

Option Explicit


Sub main()
Dim mtr As Double

mtr = InputBox("saisir montant des réparations :")

If mtr >= 150 Then
MsgBox ("le mt de la franchise est de : " & (mtr * 0.1))
ElseIf mtr >= 600 Then
MsgBox ("le mt de la franchise est de : 600")
Else
MsgBox ("le mt de la franchise est de : 150")
End If

End Sub
0
stefen
 
sa marche merci j'ai vu ou j'avais commis l'erreur merci
0
williom Messages postés 230 Date d'inscription   Statut Membre Dernière intervention   51
 
oups..je suis d'accord c'est très illogique et complètement faux.
0