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 :

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)
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...
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.