Réduire le temps de traitement

pascal82

XLDnaute Occasionnel
Bonjour à tous et à toutes,

Roger2327 m’a réalisé un code qui me réduit le temps de traitement pour un nombre partiel de colonne (véritable magicien ce Roger), par contre il s’arrête en cours car j’ai le micro qui manque de ressource (il a du mal à supporter 8000 lignes et 1000 colonnes).
Si quelqu’un pouvait passer le code en variables tableaux ce serait l’idéal, j’ai mon projet qui stagne depuis plusieurs semaines à cause du même problème et je n’ai pas le niveau pour le réaliser.
J’ai placé un fichier exemple en version 2003 pour toucher plus de personne alors que le fichier initial est en version 2007.
Avec le programme de Roger le temps de traitement de 1000 colonnes est de 17000 sec lorsqu'il ne plante pas (manque de resource). C'est quand même mieux que Le programme initial qui lui mettait 49000 sec.

Explication sur le fonctionnement
Etape1 : sélection de la 1° colonne (AW20 :AW79), sur ces données j’applique la formule B20+sin(AW20/H), cette formule est glissée jusqu’en 79 : H étant un nombre allant de 0.001 à 0.5 avec un pas de 0.001 (boucle).nota : il n’y a rien en colonne B lors de la sélection de la première colonne, l’avantage est de garder toujours la même formule.
Etape 2 : Sur chacune des 500 valeurs de H j’applique le test suivant =>58 * ((30 * (Moyx - Moyz) ^ 2) + (30 * (Moyy - Moyz) ^ 2)) / (DSx + DSy).
Etape3 : Le résultat du test est gardé en mémoire et a la fin des 500 tests, je relance la formule B20+sin(AW20/H) toujours sur la première colonne avec la valeur de H qui a donné le résultat max du test. Cette valeur de H sera copiée en H1
Etape 4 : Le résultat de la formule est copié en B20 :B79 dans le but d’incrémenter le test pour les prochaines colonnes
Retour a l’étape 1 avec passage sur la colonne AX20 :AW79

Concernant l’origine des formules de la ligne 20, il s’agit de sommes de combinaisons. Il y a un tableau de 14 mesures par ligne (observations) et je dois créer 62 attributs constitués de 1000 combinaisons. Cette partie est traitée en manuel, j’ai donc 62 fichiers avec 1000 colonnes à traiter).

Cordialement
 

Pièces jointes

  • F2003.zip
    37.3 KB · Affichages: 42
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Réduire le temps de traitement

Bonjour à tous,

Si quelqu’un pouvait passer le code en variables tableaux ce serait l’idéal
Pourquoi !? Tu penses gagner du temps ainsi ...
J'ai un exemple concret ou passer par des tableaux est beaucoup .... mais alors beaucoup plus long

Tout dépend du PC (processeur, mémoire vive)

A+
 

pascal82

XLDnaute Occasionnel
Re : Réduire le temps de traitement

Bonjour le Fil,

Ma culture concernant les tableaux est proche de « 0 », cependant j’ai pu lire sur les différents tutoriels que cette méthode faisait des miracles pour réduire le temps de traitement.
Maintenant je reste ouvert à toutes propositions.

Très cordialement.
 

MJ13

XLDnaute Barbatruc
Re : Réduire le temps de traitement

Bonjour Pascal, JM, Bruno

Il est vrai que les tableaux cela peut être ultra rapide, comme ce code donné par CbernardT et Softmama qui permet de trancrire 2 colonnes avec nom de dossier et nom de fichier en 8 colonnes avec le nom de dossier et 8 nom de fichiers.

Code:
Sub Img_Planche_Contact_OK()
'CBernardT et Softmama
Dim i As Long, j As Byte, n As Long, Z As Long, Tablo, TabRes, T1, T2
'T1 = Timer
With ActiveSheet 'Sheets("Feuil1")
Tablo = .Range("A2:B" & .Range("A65536").End(xlUp).Row)
Z = UBound(Tablo, 1)
End With
ReDim TabRes(1 To Z, 1 To 9)
n = 1
For i = 1 To Z
TabRes(i, 1) = Tablo(n, 1)
For j = 2 To 9
If Tablo(n, 1) <> TabRes(i, 1) Then Exit For
TabRes(i, j) = Tablo(n, 2) ' Fin de la ligne avant 9
n = n + 1
If n > Z Then Exit For ' fin du tableau
Next j
If n > Z Then Exit For ' fin du tableau
Next i
Sheets.Add After:=Sheets(Sheets.Count)
With ActiveSheet
.Range("A1").Resize(UBound(TabRes, 1), UBound(TabRes, 2)) = TabRes
End With
'T2 = Timer: MsgBox (T2 - T1)
End Sub

Mais attention aux calculs que tu demandes qui peuvent rendre les calculs plus longs.

En tout état de chose, je suis nul en tableaux et ne pourrait pas t'aider :eek:.

En plus, Roger a du faire déjà pas mal de chose au niveau temps de traitement sur ton fichier :).
 
Dernière édition:

Discussions similaires

Réponses
15
Affichages
962