Menu

Probleme en VBA

- - Dernière réponse : pilas31
Messages postés
1845
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
18 février 2019
- 12 févr. 2019 à 16:41
Bonjour,
j'ai écrie ce code mais il n'affiche rien et j'ai pas trouvé où est le problème.
veuillez m'aider c'est urgent
merci
Sub inflow()

Dim Pr, Pb, Wc, Pwftest, Qltest, J, Qb, Qomax, Qlmax, slope, Pwftest1 As Single
Pr = Workbooks("New Microsoft Excel Worksheet").Sheets("Sheet1").Range("B3").Value
Pb = Workbooks("New Microsoft Excel Worksheet").Sheets("Sheet1").Range("B4").Value
Wc = Workbooks("New Microsoft Excel Worksheet").Sheets("Sheet1").Range("B5").Value
Qltest = Workbooks("New Microsoft Excel Worksheet").Sheets("Sheet1").Range("B6").Value
Pwftest = Workbooks("New Microsoft Excel Worksheet").Sheets("Sheet1").Range("B7").Value
Pwftest1 = 0

If Pr >= Pb And Ppwftest >= Pb Then 'test de pression cas1
J = Qltest / (Pr - Pwftest)
Qb = J * (Pr - Pb)
Qomax = Qb + J * Pb / 1.8
slope = (Wc * 0.001 * Qomax / J + 0.125 * (1 - Wc) * Pb * (-1 + Sqr(81 - 80 * (0.999 * Qomax - Qb) / (Qomax - Qb)))) / (0.001 * Qomax)
Qlmax = Qomax + (1 - Wc) * (Pr - Qomax / J) / slope


ElseIf Pr > Pb And Pwftest < Pb Then 'test de pression cas2
Do While Abs(Pwftest - Pwftest1) < 14.5
J = Qltest / ((1 - Wc) * (Pr - Pb + (Pb * (1 - 0.2 * (Pwftest / Pr) - 0.8 * (Pwftest / Pr) ^ 2))) + Wc * (Pr - Pwftest))
Qb = J * (Pr - Pb)
Qomax = Qb + J * Pb / 1.8
slope = (Wc * 0.001 * Qomax / J + 0.125 * (1 - Wc) * Pb * (-1 + Sqr(81 - 80 * (0.999 * Qomax - Qb) / (Qomax - Qb)))) / (0.001 * Qomax)
Qlmax = Qomax + (1 - Wc) * (Pr - Qomax / J) / slope
If Qltest <= Qomax Then Pwftest1 = Wc * (Pr - Qltest / J) + 0.125 * (1 - Wc) * Pb * (-1 + Sqr(81 - 80 * (Qltest - Qb) / (Qomax - Qb))) Else Pwftest1 = Wc * (Pr - Qomax / J) - (Qltest - Qomax) * slope
Pwftest = Pwftest1
Loop


ElseIf Pr < Pb And Pwftest < Pb Then 'test de pression cas3

Pb = Pr
Qb = 0
Range("B4").Value = Pr

Do While Abs(Pwftest - Pwftest1) < 14.5
J = Qltest / ((1 - Wc) * (Pr * (1 - 0.2 * (Pwftest / Pr) - 0.8 * (Pwftest / Pr) ^ 2)) + Wc * (Pr - Pwftest))
Qomax = Qb + J * Pb / 1.8
slope = (Wc * 0.001 * Qomax / J + 0.125 * (1 - Wc) * Pb * (-1 + Sqr(81 - 80 * (0.999 * Qomax - Qb) / (Qomax - Qb)))) / (0.001 * Qomax)
Qlmax = Qomax + (1 - Wc) * (Pr - Qomax / J) / slope
If Qltest <= Qomax Then Pwftest1 = Wc * (Pr - Qltest / J) + 0.125 * (1 - Wc) * Pb * (-1 + Sqr(81 - 80 * (Qltest - Qb) / (Qomax - Qb))) Else Pwftest1 = Wc * (Pr - Qomax / J) - (Qltest - Qomax) * slope
Pwftest = Pwftest1
Loop


End If

Range("E3") = J
Range("E4") = Qb
Range("E5") = Qomax
Range("E6") = Qlmax
Range("E7") = slope


End Sub




Configuration: Windows / Chrome 71.0.3578.98
Afficher la suite 

Votre réponse

1 réponse

Messages postés
1845
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
18 février 2019
713
0
Merci
Bonjour,

Juste en regardant le code rapidement et sans savoir ce qu'il fait deux remarques :

1/
"If Pr >= Pb And Ppwftest >= Pb Then 'test de pression cas1"
il me semble qu'il y a une faute de frappe car la variable déclarée et utilisée ailleurs est Pwftest

2/
"Do While Abs(Pwftest - Pwftest1) < 14.5
....
Pwftest = Pwftest1
Loop"

Sauf erreur de ma part cela signifie que la boucle ne s'effectue qu'une fois car aprés la 1° exécution la condition du While est toujours vraie.


Commenter la réponse de pilas31