Bonjour,
j'ai un soucis concernant la lourdeur de mon programme je répète plusieurs fois la même procédure dans mon form à une valeur près :
je cherche un moyen pour ne pas répéter cette procedure une bonne dizaine de fois d'autant plus que seul la partie soulignée en gras change selon que je selectionne dans un combobox de l'userform du béton ou de la brique etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Dim Alpha As Variant, Alpha_vitre As Variant, A As Variant Dim LpGlobal As Single, LpTot As Single, S As Single Dim Lp As Variant, Lpvoisin As Variant, Lw As Variant, Lwtrans As Variant, Lv As Variant Dim PondA As Variant Dim sigmaM As Variant J = 1 Lv = 0 Lwtrans = 0 Lpvoisin = 0 S = CDbl(UserForm1.TextBox4.Value) * CDbl(UserForm1.TextBox5.Value) For i = 5 To 25 Alpha_béton = Worksheets("Feuil4").Range("C" & i) Alpha_vitre = Worksheets("Feuil4").Range("L" & i) PondA = Worksheets("Feuil4").Range("B" & i) R = Worksheets("Feuil3").Range("B" & i - 3) Lwatot = Worksheets("Feuil3").Range("G" & i - 3) sigmaM = Worksheets("Feuil3").Range("A" & i - 3) A = Alpha_béton * ((2 * CDbl(UserForm1.TextBox7.Value) * CDbl(UserForm1.TextBox8.Value)) + (2 * CDbl(UserForm1.TextBox6.Value) * (CDbl(UserForm1.TextBox7.Value) + CDbl(UserForm1.TextBox8.Value))) - ComboBox9.Value - ComboBox12.Value) + (Alpha_vitre * (100 - ComboBox13.Value) * ComboBox12.Value / 100) + ComboBox9.Value + (ComboBox13.Value * ComboBox12.Value / 100) Lp = Lwatot + 6 - (10 * (Log(A)) / Log(10)) LpTot = LpTot + 10 ^ (0.1 * (Lp + PondA)) Lw = Lp + (10 * (Log(S) / Log(10))) Lwtrans = Lw - R Lv = Lwtrans - (10 * Log(sigmaM * S) / Log(10)) Lpvoisin = Lv + (10 * Log(4 * sigmaM * S / Avoisin) / Log(10)) LpTotvoisin = LpTotvoisin + 10 ^ (0.1 * (Lpvoisin + PondA)) J = J + 1 ThisWorkbook.Worksheets("Feuil3").Cells(J, 9).Value = Lp ThisWorkbook.Worksheets("Feuil3").Cells(J, 10).Value = Lpvoisin Next i LpGlobal = 10 * Log(LpTot) / Log(10) LpGlobalvoisin = 10 * Log(LpTotvoisin) / Log(10)
j'ai essayé en recopiant ce code dans un module et en l'apellant dans le form mais ça Bug vu que le Alpha doit être inclu dans la boucle.
Partager