Erreur de calcul avec des comparaisons

[Résolu]
Signaler
Messages postés
32
Date d'inscription
mardi 10 avril 2007
Statut
Membre
Dernière intervention
28 décembre 2007
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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>
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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 ...
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
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>
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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 !!!!
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
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>
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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...


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


Je reprendrai ce soir ...