Probleme en VBA

Fermé
b.yessin - 8 févr. 2019 à 13:49
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 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

1 réponse

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
Modifié le 12 févr. 2019 à 16:42
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.


0