Temps d'exécution programme VBA

Je suis face à quelque chose d'étonnant.

Je réalise un programme qui a pour but de compter le nombre d'heure réalisé par chaque opérateur dans un planning

Pour faire des test de temps d'exécution de mon programme j'ai choisi une personne qui avait réalisé 160 heure sur un mois que j'ai copié collé 3 fois pour me faire un trimestre

Quand je le teste tout seul, le programme mets moins d'une seconde à se réaliser. Ce qui me donne un temps de <1s/personne

Quand je fais le test avec 25 fois cette personne (avec des noms bidons pour que le programme pense que ce sont des personnes différentes), le programme mets 2 min et 51s à s'exécuter soit 6,96s/personne et 0,044s/par heure réalisé par l'opérateur

J'ai donc essayer avec 50 fois cette personne et la j'en ai eu pour 10 min et 43s soit 12,86s/personne et 0,067s/heure réaliser par l'opérateur

comment est ce possible que le programme mette plus de temps à réaliser la même tache en fonction du nombre de fois qu'il a à la réaliser ? En sachant que j'ai fais écrire au programme le temps qu'il met à faire chaque personne et le temps n'augmente pas au fur et à mesure du programme. quand il y 25 personne que ce soit la première ou la dernière personne il va mettre 7 seconde à la réalisé. Idem à 50 il va mettre 13s pour toutes les personnes

J'espère avoir était clair, je me tient dispo pour envoyer mon code expliqué si cela est nécessaire à la compréhension du sujet

Bonjour,

Cela dépend des opérations que vous effectuez, vous avez probablement des boucles qui font augmenter le temps de calcul de manière non-linéaire. Cela s'appelle la complexité algorithmique.

Parfois un programme peut etre plus rapide sur un petit échantillon et plus lent sur un grand, ou de manière plus surprenante au premier abord, l'inverse est également possible.

Si vous souhaitez des conseils/une révision de votre algorithme (qui selon moi est possible car les temps que vous indiquez sont assez gigantesques), n'hésitez pas à poster un fichier d'exemple accompagné de votre macro.

Bonjour

Pas facile de vous donner une explication sur base de vos explications...
Cela m'a l'air d'être un souci de mémoire
Une première idée serait de savoir si vous avez beaucoup de formules dans le fichier car à chaque changement de valeur, excel recalcule tout le fichier si l'option Calcul automatique est activée (elle l'est toujours par défaut)

Crdlt

EDIT : Oups Saboh12617...désolé je n'avais pas rafraichi

Bonjour merci de vos réponse

j'avais en effet oublié de désactivé l'option de calcul automatique...

ce problème m'a finalement fait réfléchir sur mon code et j'ai eu une idée pour réduire considérablement le temps d'execution.

si mon nouveau code rencontre toujours cette augmentation non linéaire de temps d'exécution j'enverrai mon fichier ici

merci encore

bonjour karlex,Dan,Saboh12617,

normallement ce que vous demandez là; cela se calcule en moins que 1 seconde pour 100 personne, je suppose. Le truc est de minimaliser les interventions avec la feuille, c'est à dire, on lit tous les données de toutes les personnes au début, on calcule et on écrit le résultat à la fin de la macro = 2 interventions.

Donc si le layout est bien, le résultat sera instantément ...

Rechercher des sujets similaires à "temps execution programme vba"