Vais pas te mettre toutes mes lignes de code dans le forum.
Le problème est "simple". Je fais ma boucle :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Private Function search_stat(ByVal idx_dest As Integer, ByVal COD_STAT As Integer) As Boolean
'On Error GoTo err_search_stat
'Déclaration des variables
Dim return_value As Boolean
Dim idx As Integer
Dim size_tmp As Integer
return_value = False
idx = 1
size_tmp = tab_destinataire(idx_dest).size_tab_stat_get
Do While idx < size_tmp And return_value = False
idx = idx + 1
Loop
search_stat = return_value
End Function |
Il me fait 851 tour de boucles pour parcourir mes enregistrements (avant c'était 618, mais la c'est 851), puis je sais pas pourquoi à ce tour là, il continue le programme en sortant bien de ma fonction ci-dessus, continue le traitement, et au moment où je veux mettre à jour ma barre de progression, il me péte une erreur "Expression trop complexe".
Si je l'enléve (la MAJ), ca passe nickel.
Je sais pas où se situe le probleme, puisque j'appelle la fonction suivante :
1 2 3
| Public Sub MajProgressBar(ByVal new_val As Integer)
ProgressBar1.value = new_val
End Sub |
comme ca : avec i = 851
Pourquoi les 850 première fois ca a marché, et pas à la 851eme je sais pas.
Attends, ca c'est dans le cas ou je ne fais qu'un simple tour de boucle dans ma fonction search_stat
Now, si j'essaie de faire comme au début, c'est à dire :
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
|
Private Function search_stat(ByVal idx_dest As Integer, ByVal COD_STAT As Integer) As Boolean
Dim return_value As Boolean
Dim idx As Integer
Dim size_tmp As Integer
Dim code_tmp As Integer
Dim cod_err_tmp As Integer
Dim cod_fct_tmp As Integer
Dim cod_err_tmp2 As Integer
Dim cod_fct_tmp2 As Integer
return_value = False
idx = 1
size_tmp = tab_destinataire(idx_dest).size_tab_stat_get
Do While idx < size_tmp And return_value = False
code_tmp = tab_destinataire(idx_dest).get_value_tab(idx).code_get
cod_err_tmp = tab_destinataire(idx_dest).get_value_tab(idx).cod_err_get
cod_fct_tmp = tab_destinataire(idx_dest).get_value_tab(idx).cod_fct_get
Debug.Print ModTraitErr.tab_info(2)
Debug.Print val(ModTraitErr.tab_info(2))
cod_err_tmp2 = val(ModTraitErr.tab_info(15))
cod_fct_tmp2 = val(ModTraitErr.tab_info(2))
If code_tmp = COD_STAT And cod_err_tmp = cod_err_tmp2 And cod_fct_tmp = cod_fct_tmp2 Then
return_value = True
Else
idx = idx + 1
End If
Loop
search_stat = return_value
Exit Function |
(en bleu, c'est là ou ca pete)
ce coup ci, il m'affiche une erreur "Dépassement de capacité" (à l'enregistrement 851 encore et toujours), au moment où j'essaie de faire ca :
Debug.Print val(ModTraitErr.tab_info(2))
alors que après contrôle, je suis certain qu'il y a bien soit un 7, soit un 6 dans tab_info(2).
Je ne sais pas ce qu'il me fait, suis totalement pommé dans son comportement.
Si j'essaie de passer en mode Debug en mettant des points d'arrêt à la ligne 851, il ne me pete aucune erreur...
Quelles lignes tu veux en plus???
Debug.print ModTraitErr.tab_info(2)
m'affiche 6
Debug.print val(ModTraitErr.tab_info(2))
devrait m'afficher 6 également. Mais il pete à ce moment là...
Pourquoi au moment de l'affectation ca pete, je sais pas.
Partager