Optimisation et non affichage des classeurs

Bonjour à tous,

Avant de lire le pavé, je souhaite prévenir que mon programme est en partie fini, il me reste simplement de l'optimisation à faire.

Je suis novice en VBA

En cours, nous avons eu un projet qui consiste à créer :

  • la liste des nombres premiers de 1 à 500 000,
  • la liste des écarts successifs de ces nombres (noté delta)
  • la liste des angles en radian (alpha=Delta/2pi)
  • et la liste des angles cumulés (bêta = Somme(alpha))

Ensuite de tracer le graphe (nuage de point relié) entre les bêta successif (exemple : tracer un trait entre 0 et Beta1 puis Beta1 et Beta2...)

Je dois ensuite répéter le programme pour des nombres aléatoires cette fois-ci.

Bien-sur obligé d'utiliser VBA et de rendre un programme le plus optimisé possible.

J'ai réalisé avec un collègue de classe un programme qui fonctionne, mais assez long. (cf pièce jointe :

)

J'ai quelques détail à modifier et c'est à ce moment que j'aurais besoin de votre aide :

- je suis obligé de cliquer sur le bouton pour lancer le programme, puis cliquer sur calculer en bas a droite pour qu'il se mette a jour dans le graphe. Je voudrais que le graphe se mette à jour automatiquement.

- Et bien-sur j'aimerais réduire le temps d’exécution, je pense dans un premier temps à ne plus afficher les tableaux mais directement le graphique.

Donc soit trouver une fonction qui permet de cacher les tableaux, soit directement ne plus passer par les tableaux mais peut être par des variables ou autres?

- J'ai aussi l'impression que mon timer est faux (quelques secondes d'écart avec la réalité) est-ce normal?

Merci d'avance pour vos réponse!

Bonjour,

tu peux améliorer les performances en travaillant avec des arrays VBA

tu as laissé une erreur de syntaxe un x à la fin du dernier application.calculation qui fait que tu dois appuyer sur F9 pour avoir la mise à jour du graphique.

Bonsoir h2so4,

Merci pour ta réponse et ton travail, mon programme est plus rapide mais je me demande si je pourrais encore l'optimiser,

comme par exemple ne plus afficher les tableaux (car seul le graph m'est demandé)

j'ai regardé ce que tu avais modifié sur le programme est je comprends pas tous les changements :

  • Pourquoi avoir changé les cells en date()? ( et c'est aussi la raison pour la quelle K a disparu)
  • Quelle est la fonction unsur2pi qui remplace la formul PI?

Merci encore pour le temps passé à m'aider

Bonjour,

comme expliqué plus haut, tu peux améliorer les performances en utilisant des variables array vba. J'ai remplacé le stockage des valeurs dans les cellules par un stockage des valeurs dans une array nommée data.

K ayant toujours la même valeur que N (j'ai gardé N et supprimé K)

unsurpi2 = pour gagner du temps on ne fait ce calcul qu'une fois et on utilise le résultat quand nécessaire.

si tu fais le calcul

a*1/(2*pi) à l'intérieur d'une boucle de 500000 tu feras le calcul 1/(2*pi) 500.000 fois

si tu calcules 1/(2*pi) avant de rentrer dans la boucle tu ne le feras qu'une seule fois

a*unsur2pi

par contre je ne suis pas parvenu à charger les données du graphique directement à partir d'une arrray vba. (bien qu'il semble que ce soit possible).

Merci beaucoup,

J'ai réussi à modifié mon programme pour créer plusieurs série différentes et donner des couleurs au graphe avec des plages de donnée.

Merci beaucoup de votre aide qui ma grandement aidé à rendre mon programme plus rapide.

Cordialement

Rechercher des sujets similaires à "optimisation affichage classeurs"