Probleme en VBA
b.yessin
-
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
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
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
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.
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.