RE PROBLEME ARRONDIES

Résolu
Signaler
Messages postés
11
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
25 avril 2008
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
<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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
après, tout dépendra de ton arrondi... a voir si il prend par defaut ou par excès