Bonjour,
Je cherche à réduire mon temps de calcul ou plutot a savoir pourquoi la copie dans excel de données est si longue. Voici mon Code. Pour chaque ligne je calcul en fonction d'une donnée theta_op extraite de ma feuille le PMV. Lorsque j'exécute sans copier le résultat dans ma feuille excel, la résolution est quasi automatique pour les 8700 lignes de calcul. Lorsque j'exécute en copiant pas à pas le résultat, le calcul prend environ 3 min. J'ai bien désactiver le calcul automatique et l'affichage. Est ce normal un temps de calcul si long ou y a t'il une méthode pour accélerer l'exécution
Merci d'avance
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 Sub Initialisation() Application.Cursor = xlDefault Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'Nommage des feuilles relatives Set param_entree = Workbooks("Indic.xlsm").Sheets("Paramètres d'entrée") Set donnees_entree = Workbooks("Incic.xlsm").Sheets("Données d'entrée") Set resultats = Workbooks("Indic.xlsm").Sheets("Résultats globaux") Set feuille_travail = Workbooks("Indic.xlsm").Sheets("FeuilleDeTravail") ' Extraction des hypothèses Debut = donnees_entree.Range("E9").Value 'extration du début de simulation Fin = donnees_entree.Range("E10").Value ' extraction de la fin de simulation Finprogression = Fin * 24 + 1 param_entree.Activate ICL = 0.5 * 0.155 M = 58.15 W = 0 VA = 0.2 RH = 50 MW = M - W PMV = 1 If ICL < 0.078 Then FCL = 1 + 1.29 * ICL Else FCL = 1.05 + 0.645 * ICL End If For i = Debut + 3 To Fin * 24 + 2 'Boucle sur les pas de temps 'Pour TA = Theta_op TA = param_entree.Range("Q" & i).Value TR = TA TAA = TA + 273 'Température de l'air en degrés kelvin TRA = TR + 273 'Température moyenne de rayonnement en degrés kelvin P1 = ICL * FCL 'Etape de calcul P2 = P1 * 3.96 'Etape de calcul P3 = P1 * 100 'Etape de calcul P4 = P1 * TAA 'Etape de calcul P5 = 308.7 - 0.028 * MW + P2 * (TRA / 100) ^ 4 XN = TCLA / 100 XF = XN N_LIM = 150 'Nombre limite d'itérations EPS = 0.00015 'Critère de convergence N = 0 'N : Nombre d 'itérations NWHILE = 1 While (Abs(XN - XF) > EPS) Or (NWHILE = 1) XF = (XF + XN) / 2 HCN = 2.38 * Abs(100 * XF - TAA) ^ 0.25 'Coefficient de transfert de chaleur par convection naturelle If HCF > HCN Then HC = HCF Else HC = HCN End If XN = (P5 + P4 * HC - P2 * (XF ^ 4)) / (100 + P3 * HC) N = N + 1 If N > N_LIM Then Exit Sub End If If NWHILE = 1 Then NWHILE = NWHILE + 1 End If Wend TCL = 100 * XN - 273 'Température de surface du vêtement PA = RH * 10 * Exp(16.6536 - 4030.183 / (TA + 235)) TS = 0.303 * Exp(-0.036 * M) + 0.028 H1 = 3.05 * 10 ^ -3 * (5733 - 6.99 * (M - W) - PA) If MW > 58.15 Then H2 = 0.42 * (MW - 58.15) Else H2 = 0 'Perte de chaleur par sudation (confort) End If H3 = 1.7 * 0.00001 * M * (5867 - PA) 'Perte de chaleur latente par respiration H4 = 0.0014 * M * (34 - TA) 'Perte de chaleur sèche par respiration H5 = 3.96 * 0.00000001 * FCL * (XN ^ 4 - (TRA / 100) ^ 4) 'Perte de chaleur par rayonnement H6 = FCL * HC * (TCL - TA) 'Perte de chaleur par convection PMV = TS * (MW - H1 - H2 - H3 - H4 - H5 - H6) param_entree.Range("AD" & i).Value = PMV Next i Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub
Partager