Probléme de code VB6

stefen -  
williom Messages postés 234 Statut Membre -
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
Configuration: Windows XP
Firefox 3.0.3

7 réponses

  1. 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
  2. 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
    1. 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
  3. williom Messages postés 234 Statut Membre 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
    1. stefen
       
      oui oui j'avais vu pour string je l'ai modifier merci mais marche tj pas
      0
  4. williom Messages postés 234 Statut Membre 51
     
    le test est à faire sur mtr :

    if mtr >=150 then
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. williom Messages postés 234 Statut Membre 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
  7. stefen
     
    sa marche merci j'ai vu ou j'avais commis l'erreur merci
    0
  8. williom Messages postés 234 Statut Membre 51
     
    oups..je suis d'accord c'est très illogique et complètement faux.
    0