Temps d’exécution d'une macro sur tout le classeur trop long

Bonjour

Je me permets de vous solliciter à nouveau car j'ai un problème que je ne sais pas résoudre.

Je débute sur VBA et je ne peux écrire pour le moment que des codes simples ou me fier à des codes que je trouve sur des forums tel que celui-ci.

Ma situation est la suivante :

Quand je lance le formulaire de saisie (c'est un Userform) de mon classeur, que je fais mes choix et que je clique sur le bouton "calculer", la macro prends en compte les choix réaliser dans les ComboBox, les colle dans les 3 différentes feuilles concernées et lance le calcul des formules présentes dans lesdits onglets

Le problème vient du fait que le temps d’exécution est très long (+ de 5 minutes) alors que pris séparément le calcul de chaque onglet oscille entre 30 secondes pour 2 d'entre eux et 1 minutes 30 pour le plus lourd.

Je ne comprends pas pour quelles raisons c'est plus long.

Que puis-je faire pour accélérer ce temps d'exécution ?

De plus je souhaiterai mettre en place une ProgressBar pour que les utilisateurs ne perdent pas trop vite patience, est ce possible sur le calcul de trois onglets ?

Je vous joins mon fichier sans les bases mais j'espère que vous pourrez quand même voir des choses.

Merci d'avance

21tdb-test.xlsb (238.99 Ko)

Bonjour,

La lenteur que tu constates s'explique par deux choses :

1. Le nombre de lignes 200'000

2. Et l'usage pour le moins enthousiaste de Sommeprod sur 200'000 lignes

Pour accéler ton traitement, tu devrais :

1. Remplacer toutes tes formules SOMMEPROD par des formules SOMME.SI.ENS

2. Si possible réduire ton nombre de lignes

3. Ou même l'idéal ... Supprimer toutes tes formules et les remplacer par des macros ...

En espèrant que cela t'aide

Merci pour ta réponse !

Réduire mon nombre de lignes est impossible, c'est la taille de ma base mais je vais suivre ton conseil et remplacer les sommeprod par des somme.si.ens. Petite question quand tu parles de supprimer les formules et de passer par des macros tu entends quoi exactement ?

Merci pour ta réponse

Bonjour,

Je ne connais pas ton degré de familiarité avec Excel ...

Dans chaque cellule où se trouve une formule ... ta macro peut effectuer ce calcul et afficher le résultat final dans cette cellule ...

L'ensemble de ton fichier serait donc totalement instantané ... puisque tous les calculs ' consommateurs de temps ' seraient sous-traités à une macro ... et la feuille elle-même ne contiendrait plus aucun calcul ...

A noter qu'une ProgressBar n'a comme unique conséquence que de tout ralentir ... puisqu'en plus de ta macro qui tourne ...

Excel doit maintenant ( et en même temps ) afficher et faire tourner la macro dédiée de la ProgressBar ...

Merci pour ta réponse.

Effectivement je crois comprendre ce que tu veux dire, mais je ne crois pas avoir le niveau.

Au mieux j'ai déjà fait un Range.formula

Est ce de ça dont tu parles ?

D'accord je vais me passer de la ProgressBar dans ce cas

Merci

Bonjour,

Ce n'est pas exactement ce que tu dis ...

Je vais te préparer un simple exemple illustratif ...

A +

Re,

Ci-joint un exemple pour illustrer le point :

" Comment se débarasser de multiples formules lourdes et lentes ? "

Tu comprendras très vite l'avantage à en tirer ... surtout dans ta configuration ...

129test-lenidan-v1.xlsm (19.01 Ko)

Effectivement, je vais m'empresser de tester tout ça.

Merci beaucoup !

Je te dirai comment ça s'est passé.

De rien ...

Effectivement ... je pense que cela va bigrement alléger ton fichier ...

En cas de difficulté, il ne faut pas hésiter à revenir sur le Forum ...

Rechercher des sujets similaires à "temps execution macro tout classeur trop long"