Bonjour à tous,
Je soliscite votre aide pour m'aider à optimiser mon code !
En effet, je traite du fichier texte avec des variables non constantes ce qui fait parfois exploser le compteur de caractère dans le fichier string, il me faudrait donc l'aide de développeur expérimentés pour m'indiquer comment optimiser mon code.
En fait ce n'est qu'une partie de mon code qui prend son temps (ayant testé toutes les parties une par une c'est de loin celle la la plus longue).
Je vous explique brièvement ce que fait cette partie de code et je vous montre mon code ensuite :
Tableau numéro 1 ou Tab_fin:
- le "|" correspond à un "Chr(9)" mais pour soucis de lisiblité je vous fais cette petite barre
- le 0 au début est un délimiteur
- nous avons dans l'exemple suivant x1x x2x et x3x ==> le chiffre au milieu correspond au numéro de module
- il y a plusieurs lignes à ce tableau car il y a des mesures à différents temps
nb_mod| param1 | param2 | param3 | vbCrLf
0 | x11 | x12 | x13 | x21 | x22 | x23 | x31 | x32 | x33 | vbCrLf
0 | x11 | x12 | x13 | x21 | x22 | x23 | x31 | x32 | x33 | vbCrLf
0 | x11 | x12 | x13 | x21 | x22 | x23 | x31 | x32 | x33 | vbCrLf
Tableau numéro 2 ou tab_num :
- le "|" correspond à un "Chr(9)" mais pour soucis de lisiblité je vous fais cette petite barre
- le 0 au début est un délimiteur
- ce tableau correspond à la moyenne sur 10 lignes de chaque colonne de x (appelée moyenne glissante)
- il n'y a dans ce tableau aucun retour charriot
0 | Y01 | Y02 | Y03 |Y11 | Y12 | Y13 |Y21 | Y22 | Y23 | 0 |Y01 | Y02 | Y03 |
But du code, obtenir le tableau suivant :
nb_mod| param1 | param2 | param3 | vbCrLf
0 | x11 | x12 | x13 | x21 | x22 | x23 | x31 | x32 | x33 |0 | Y01 | Y02 | Y03 |Y11 | Y12 | Y13 |Y21 | Y22 | Y23 | vbCrLf
0 | x11 | x12 | x13 | x21 | x22 | x23 | x31 | x32 | x33 |0 | Y01 | Y02 | Y03 |Y11 | Y12 | Y13 |Y21 | Y22 | Y23 | vbCrLf
- nb_param est égal au nombre de paramètres (nb_mod non compte)
- nb_mod est égal au nombre de modules
La derniere ligne toute moche est en fait une "correction" apportée suivant mes résultats donc voila le but serait de faire sans
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 'stockage dans le contenu sContenu = "" b = True jp = 1 kp = 1 y = 1 x = 2 For i = 1 To UBound(Tab_num) If (y * (nb_param * nb_mod + 1) < UBound(Tab_num) - 1) Then If (b = True) Then For j = jp To x * (nb_param * nb_mod + 1) + nb_param + 1 sContenu = sContenu & Tab_fin(j) & Chr(9) jp = jp + 1 Next j x = x + 1 b = False Else For k = kp To y * (nb_param * nb_mod + 1) If (k < y * (nb_param * nb_mod + 1) - 1) Then sContenu = sContenu & Tab_num(k) & Chr(9) kp = kp + 1 Else sContenu = sContenu & Tab_num(k) & Chr(9) & vbCrLf kp = kp + 1 End If Next k b = True y = y + 1 End If End If Next i sContenu = Replace(sContenu, "0" & Chr(9) & vbCrLf, "")
Voila, ce bout de code correspond à la mise en forme du tableau 1 avec le tableau 2 suivant ce qui est défini précédemment.
Si vous avez une quelconque question n'hésitez pas à me prévenir.
Je sais que ça peut prendre du temps donc je tiens à remercier les personnes qui se pencheront sur ce problème.
Cordialement
Partager