Probléme de code VB6

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

  • Votes
  • Date
  • Date décroissante
  1. 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. 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"
      1. 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???
    2. 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 ?
      1. oui oui j'avais vu pour string je l'ai modifier merci mais marche tj pas
    3. 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
      1. oups..je suis d'accord c'est très illogique et complètement faux.