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


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, "")
La derniere ligne toute moche est en fait une "correction" apportée suivant mes résultats donc voila le but serait de faire sans

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