RE PROBLEME ARRONDIES

Résolu
cs_LAURENTE Messages postés 11 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 25 avril 2008 - 21 avril 2008 à 19:53
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 22 avril 2008 à 08:57
Bonjour à tous,

J'écris suite à mon message du 19.04 (PROBLEME D'ARRONDIES) et sollicite donc particulièremet casy qui a "presque" su résoudre mon problème...

Effectivement, j'écris le programme suivant sous OOO :

Option Explicit
Dim Lambdaz as double
Dim Lambday as double
Dim LambdaMax as double
Dim KSI as double



Sub KSICALCUL



Lambdaz= CDec(Inputbox("Entrez Lambdaz"))
Lambday=CDec(Inputbox("Entrez Lambday"))



  LambdaMax = Lambdaz / Lambday
  LambdaMax = CDec(format(LambdaMax,"0.0"))
 
If LambdaMax=1.0 Then
KSI=0.5525
End If



If LambdaMax=0.8 Then
KSI=0.4444
End If



If LambdaMax=0.7 Then
KSI=0.1111
End If



MsgBox(KSI)



END SUB


... qui marche bien pour LambdaMax 0.8 et LambdaMax 1.0 mais pour LambdaMax = 0.7, rebelote, il m'affiche KSI=0.... Vraiment j'y comprend rien, je vois pas d'ou ça peut venir! HELP HELP HELP

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
21 avril 2008 à 20:57
J'ai répondu au MP, j'avais pas vu que tu avais ouvert un topic

Pour la réponse, il semblerait qu'il faille aussi convertir explicitement les constantes en doubles :

If LambdaMax= CDec(1.0) Then
...
If LambdaMax=CDec(0.8) Then
...
If LambdaMax=CDec(0.7) Then

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
22 avril 2008 à 07:37
<li>
Vous êtes ici : [infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_DIVERS_220.aspx Divers] / [infomsgt_GENERAL_222.aspx General] / RE PROBLEME ARRONDIES</li>


déplacé vers VBA
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
22 avril 2008 à 08:55
nettoyé le code, on obtiens :

Sub KSICALCUL()
Dim Lambdaz As Double '# Inutile (a priori) de déclarer tes variables a l'exterieur de ta procédure
Dim Lambday As Double
Dim LambdaMax As Double
Dim KSI As Double
Dim sBuffer As String
'# On mémorise la saisie dans une chaine de caractères
sBuffer = InputBox("Entrez Lambdaz")
'# Est-ce que la chaine est numérique ? (d'après les parametres régionnaux)
If IsNumeric(sBuffer) Then
Lambdaz = CDec(sBuffer) '# ex: 1,6
Else
'# Sinon, on tente via le format international
Lambdaz = Val(sBuffer) '# ex: 1.6
End If

'# Idem, pour Lambday
sBuffer = InputBox("Entrez Lambday")
If IsNumeric(sBuffer) Then
Lambday = CDec(sBuffer)
Else
Lambday = Val(sBuffer)
End If

'# Si Lambday<>0 (puisque il est dénominateur dans la ligne qui suit)
If Lambday Then
'# Pas de CDec, Format ... on joue avec la valeur numérique directement...
LambdaMax = Round(Lambdaz / Lambday, 1)
'# On pourrait aussi utiliser un Select Case LambdaMax
If LambdaMax = 1# Then
KSI = 0.5525
ElseIf LambdaMax = 0.8 Then
KSI = 0.4444
ElseIf LambdaMax = 0.7 Then
KSI = 0.1111
End If
End If
MsgBox (KSI)
End Sub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
22 avril 2008 à 08:57
après, tout dépendra de ton arrondi... a voir si il prend par defaut ou par excès
0
Rejoignez-nous