Calcul de moyenne automatisé [Excel] - VB/VBA/VBS - Programmation
Marsh Posté le 09-07-2009 à 10:24:40
Oui je ferais cela de la même manière. C'est la bonne voie.
L'Excel en anglais n'a aucune importance: en Visual Basic, les noms des method et properties est toujours uniquement en anglais.
Moyenne --> Average
Marsh Posté le 10-07-2009 à 05:09:59
C'est re-moi, donc j'ai regardé un peu comment fonctionnait VBA et son utilisation avec Excel et j'ai pondu ça:
Code :
|
Donc pour clarifier un peu:
La Sheet1 est là où j'ai mes données, le temps en A et le coef en D.
La Sheet2 est la feuille où je veux mettre mes valeurs moyennées, en A le temps et en B le coef.
Ca a l'air de plutôt bien fonctionner, pour traiter 1 million de lignes ça met un peu moins de 10 secondes! Est-ce que vous pensez que y a moyen d'améliorer le code pour que ça aille un peu plus vite ou pour la "beauté du code? C'est pas nécessaire mais c'est juste par curiosité ^^
Merci d'avance
Marsh Posté le 17-07-2009 à 16:10:45
Non c'est très bien comme cela, tu sais VBA c'est interprété donc pas rapide...
Marsh Posté le 21-07-2009 à 15:31:14
Bonjour
Oui tu peux masquer l'execution d'excel pendant ta macro :
Application.screenupdating=false
et a la fin de ta macro
Application.screenupdating=true
Comme tu vois pas ce que fait excel, tu gagnes quelques secondes (voir minutes pour les gros gros traitements)
Marsh Posté le 09-07-2009 à 04:43:19
Bonjour tout le monde, j'expose brièvement mon "problème"
Suite à des expériences (mesures de coefficient de frottement) j'ai au final énormément de valeurs (temps, coefficient de frottement), un peu plus d'un million. Le logiciel de mesure me donne ça dans un fichier texte que j'ai pu importer sous Excel sans problèmes et il faut à partir de ces données que je trace un graphe coef=f(temps), un truc tout con donc. Le problème c'est qu'il faut au maximum 32000 entrées pour pouvoir tracer un graphe sous excel :\
Ma question est donc assez simple, comment faire une macro qui prend par exemple 40 valeurs successives, en fait la moyenne et met cette valeur dans une autre colonne, ceci pour le temps et le coefficient mesuré et en enchainant toutes les 40 valeurs (une boucle avec un itérateur incrémenté de 40 à chaque passage par exemple). J'imagine que c'est assez simple mais je n'ai aucune notion de VBA et de l'utilisation de macros sous Excel (j'ai des bases en c/c++ donc je pense pouvoir comprendre l'algo).
Donc au final le but serait d'obtenir 2 nouvelles colonnes (dans la même feuille ça va très bien) temps_m et coef_m comportant un peu moins de 32000 entrées chacune!
PS: j'ai un Excel anglais, je sais pas si ça change quelque chose au niveau des fonctions utilisables pour les macros.
PS2: j'envisage l'algo un peu comme ça, je sais pas si c'est le plus efficace mais c'est ce qui m'est venu à l'esprit:
Colonne A: temps, Colonne B: coef, Colonne C: temps_m(oyenné), Colonne D: coef_m(oyenné)
int j=1
Pour i=1 à fin(ColonneA)
t_tmp=moyenne(A(i):A(i+40))
c_tmp=moyenne(B(i):B(i+40))
C(j)=t_tmp
D(j)=c_tmp
j=j+1
i=i+41
fin pour
Un grand merci d'avance pour vos réponses
OinJ
Message édité par OinJ le 09-07-2009 à 04:44:02