Probleme en VBA [Fermé]

Signaler
-
Messages postés
1868
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
-
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

1 réponse

Messages postés
1868
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
568
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.