Bonjour à tous,

Je suis en train de finir le développement d'un simulateur réseau de Petri pour simuler un service d'urgence.
Ça fais 1 semaine que je suis bloquée dans une ligne de code qui m'affiche une erreur que je dois le résoudre le plus vite possible.
Je ne vais pas entrer en détails dans le concept de simulation pour ne pas compliquer le problème, mais ce que j'essaye de faire est de passer le jeton ,qui a le numéro d'indice le plus petit, d'une place à l'autre dans le cas ou la transition est franchissable . Comme par exemple( voir la figure) passer un jeton de P36 à P42.
je vous présente ci dessous une partie de mon code liée au problème. qui m’affiche sur cette ligne: (jeton_var(36, min_jeton) = min_jeton ' DE P36 A P42) que l'indice n'appartient pas à la sélection.

Nom : 60830349_1198902863611494_7077533825185611776_n.jpg
Affichages : 45
Taille : 35,3 Ko
Code: Déclaration de variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Dim id_jeton As Long
Dim min_jeton As Long
Dim jeton_var() As Long
Dim passage() As Variant
Dim inf As Double
inf = 100000
 
id_jeton = 1
ReDim jeton_var(1 To 52, 1 To id_jeton)
ReDim passage(1 To 52, 1 To id_jeton)
ReDim copie_passage42(1 To id_jeton)
''creation des jetons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
If j = 1 And tempovar(j) = t + tempo(j) Then
    jeton_var(1, id_jeton) = id_jeton
   id_jeton = id_jeton + 1
End If
 
ReDim Preserve jeton_var(1 To 52, 1 To id_jeton)
ReDim Preserve passage(1 To 52, 1 To id_jeton)
ReDim Preserve copie_passage42(1 To id_jeton)

'franchissement de T36

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
If j = 36 And tempovar(j) = Min * sfranchis(j) Then ' transition qui à le prochain temps de franchissement le plus petit
For b = 1 To id_jeton
   If jeton_var(29, b) <> 0 And jeton_var(29, b) < min_jeton Then
       min_jeton = jeton_var(29, b) ' l'indice de jeton le plus petit
   End If
Next b
 
jeton_var(36, min_jeton) = min_jeton ' DE P36 A  P42
passage(35, min_jeton) = Min
copie_passage42(min_jeton) = Min
jeton_var(29, min_jeton) = inf
Je vous remercie tous et ça me fera plaisir si je trouvera une réponse sur le forum car je suis vraiment bloqué