Erreur de calcul avec des comparaisons

Résolu
thunderpat59199 Messages postés 32 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 28 décembre 2007 - 28 mai 2007 à 14:31
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 28 mai 2007 à 15:16
j'ai un problème quand je met 311 j'ai 15.46 au lieu de 15.66

Dim b AsDouble
Dim coef AsDouble
Dim g AsDouble
Dim X AsDouble
Dim z AsDouble'variable pour essai
 
z = valaffiche
 
If74 > z Then

b = (0.072329 * z)

ElseIf73 > z < 155Then
g = 5.28
coef = 0.06321
X = z - 73
b = g + (coef * X)

ElseIf154 > z < 235Then
g = 10.46
coef = 0.06475
X = z - 154
b = g + (coef * X)

ElseIf234 > z < 312Then
g = 15.64
coef = 0.066494
X = z - 234
b = g + (coef * X)

ElseIf311 > z < 396Then
g = 20.78
coef = 0.062024
X = z - 311
b = g + (coef * X)

ElseIf395 > z < 472Then
g = 25.99
coef = 0.067273
X = z - 395
b = g + (coef * X)

EndIf

7 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
28 mai 2007 à 14:40
hé, hé, les doubles tests, ça ne marche pas comme ça. C'est plutot .... ElseIf z >154 And z<235 then ....

Mais dans ton cas il serait plus judicieux d'utiliser un select case

Dim b As Double
Dim coef As Double
Dim g As Double
Dim X As Double
Dim z As Double 'variable pour essai

z = valaffiche

Select Case z
   Case Is < 74
       b = (0.072329 * z)

   Case 74 To 154
       g = 5.28
       coef = 0.06321
       X = z - 73
       b = g + (coef * X)
   Case 155 To 234
       g = 10.46
       coef = 0.06475
       X = z - 154
       b = g + (coef * X)
   Case 235 To 311
       g = 15.64
       coef = 0.066494
       X = z - 234
       b = g + (coef * X)
   Case 312 To 395
       g = 20.78
       coef = 0.062024
       X = z - 311
       b = g + (coef * X)
   Case 396 To 471
       g = 25.99
       coef = 0.067273
       X = z - 395
       b = g + (coef * X)
End Select

, ----
[code.aspx?ID=41455 By Renfield]
---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    (Nouveau --- Forum exclusivement MSOffice et VBA by Mortalino)</italique>
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 mai 2007 à 14:36
ce genre d'expression ne sera pas compris comme tu le penses par VB !
ElseIf 73 > z < 155 Then

je pense que tu veux dire :
ElseIf  z >73   and z < 155
mais n'en suis par certain ! Que veux-tu dinc dire (précise en français) ?
Il en va de même pour toutes tes autres expressions de ce genre ...
0
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
28 mai 2007 à 14:44
Salut il faudrai à un moment mettre des inférieurs ou égales
Exemple: Si je prends 311.5 c'est < 312 mais aussi supérieur à 311, mais bon comme il testera d'abord ça ElseIf234 > z < 312Then, mais ce serai plus propre comme méthode, mais cela reste que mon avis

ElseIf
234 > z < 312Then
ElseIf311 > z < 396Then

Sinon effectivement, comme l'a précisé jmfmarques c'est ElseIf 234 > z  And z < 312 Then

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 mai 2007 à 14:45
Pour être plus clair :
z < 155 = true si z est plus petit que 155
et donc :
ElseI f  73 > z < 155 Then
équivaut à
ElseIf 73 > true Then
ce qui sera toujours vrai puisque la valeur de True est -1 !!!!
0

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

Posez votre question
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
28 mai 2007 à 14:45
Toujours au top l'ami casy 

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 mai 2007 à 15:04
Ouais...


allez donc savoir pourquoi je l'aurais écrite ainsi :


If z < 74 Then
     b = (0.072329 * z)
  Else
    z1 = z \ 154
    Select Case z1
      Case 0
        g = 5.28
        coef = 0.06321
        X = z - 73
      Case 1
        g = 10.46
        coef = 0.06475
        X = z - 154
      Case 2
        g = 15.64
        coef = 0.066494
        X = z - 234
      Case 3
        g = 20.78
        coef = 0.062024
        X = z - 311
      Case 4
         g = 25.99
         coef = 0.067273
         X = z - 395
    End Select
    b = g + (coef * X)
  End If
End Sub

et encore... je n'ai pas tout analysé !... je suis sur qu'il y a mieux à faire en "grattant" un peu...


 
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
28 mai 2007 à 15:16
Oublier mon "amélioration" (me suis planté dans les chiffres... n'avais pas tout bien regardé).


Je reprendrai ce soir ...
0