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
|
Sub simulation_module()
'recup le nom du fichier
nom_fichier = Worksheets(1).Cells(1, 2).Value
file = Application.ActiveWorkbook.Path + "\" + nom_fichier
Set Prog = GetObject(file)
...
'gestion d'erreur
On Error GoTo ErrorHandler
...
'Mex = nombre de modules
For Mex = 2 To 30
tampon = alpha / (Qeau + 1)
'zone où je reprends après l'erreur
reprise:
'boucle If pour voir si je réponds à mes critère
If critère 1 non rempli Then
'création d'un nouveau module
'j'initialise ma valeur A
Prog.Module(CStr(Mex)).A.Value = tampon
' :aie:c'est dans cette partie que je peux avoir des problèmes de convergence
'du coup, j'ai tout simplement lancer plusieurs simulations en rentrant les valeurs des paramètres étape après étape
'on lance la simulation
Prog.Application.Simulation.Run (True)
'on fixe d'autres paramètres
Prog.Module(CStr(Mex)).Q.Value = Qeau
Prog.Module(CStr(Mex)).alpha.Value = alpha
'on lance la simulation
Prog.Application.Simulation.Run (True)
'On fixe d'autres paramètres...
...
'on lance la simulation
Prog.Application.Simulation.Run (True)
'deuxième boulce if pour le deuxième critère
If critère 2 est rempli Then
...
goto ok2
Else
...
goto ok2
End If
End If
'si c'est bon on envoie vers la gestion ok
ElseIf critère 1 rempli Then
'je fixe des paramètres, en relâche d'autres, ... là il n'y a pas d'erreur
...
Prog.Application.Simulation.Run (True)
GoTo ok
'normalement si c'est la premiere il faut sortir de la boucle if
End If
'gestion du cas qui marche avec critère 2
ok2:
compteur2 = 0
'on rajoute un petit module
Next Mex
'gestion du cas qui marche avec critère 1
ok:
'traitement des données : j'appelle des sub pour traiter les données
Call save
Call ecriture
Exit Sub
ErrorHandler:
'je supprime un module et je diminue l'aire minimum
Prog.Application.Simulation.flowsheet.removeblock CStr(Mex)
tampon = 5
Err.Clear
GoTo reprise
End Sub |