Relation durée exécution macro / nombre de fichier ouvert

heislsim

XLDnaute Junior
Bonjour tout le monde,

Je suis en train de constater (avec une macro qui mets quand même un peu de temps) que si j'ouvre par exemple 4,5 fichier excel avec cette macro que dès que j'en lance une, elle mettre plus de temps pour s’exécuter qui si c'était le seul fichier excel ouvert.
En gros plus j'ai de fichier ouvert excel en même temps plus ma macro mettre de temps à s'exécuter.

Quelqu'un à déjà constater cela ? Une astuce ou solution pour cela ?

Même question du même style, mon ordi est quand même puissant (gamer moyen) du coup je ne comprends pas quoi les macros n'arrivent pas s’exécuter plus vite en ponctionnant plus de puissance de l'ordi car j'ai du mal à croire qu'excel préleve full puissance car pour moi faire tourner un bon jeu demande quand même un poil plus de puissance qu’exécuter quelques lignes de code macro, non ?

Du coup, est ce qu'il est possible qu'il y est une sorte de bridage qu'on pourrait enlever pour améliorer ça ?


Merci d'avance pour vos remarques, conseils, astuces :)
 

NezQuiCoule

XLDnaute Occasionnel
Re : Relation durée exécution macro / nombre de fichier ouvert

Bonjour heislsim,

Je ne suis pas expert en la matière, mais j'ai pu également me rendre compte que VBA reste un langage relativement lourd, car il y a beaucoup d'étapes intermédiaires entre ton code à proprement parler et le langage machine. Cependant, j'ai pu m'aperçevoir qu'il existe quelques astuces pour accélerer son code qui ont déjà certainement été évoqué dans d'autres endroit.

La plus grosse accéleration remarquable correspond à l'arrêt de l'actualisation de l'affichage Excel :

Code:
Sub MaMacro()

Application.ScreenUpdating = False 'En début de code

'Procédure

Application.ScreenUpdating = True 'En fin de code

End Sub

Fais des tests pour t'en rendre compte toi-même.
Tu as la même chose également avec l'actualisation automatique des formules, très utile si le traitement modifie des cellules liées à des formules :

Code:
Sub MaMacro()

Application.Calculation = xlCalculationManual 'En début de code

'Procédure

Application.Calculation = xlCalculationAutomatic 'En fin de code

End Sub

L'utilisation de variables tableaux permet d'alléger aussi le plus souvent le temps de traitement des macros, mais je dirai que le plus gros gain de temps possible correspond à l'optimisation de ton code lui-même.

J'ajouterai que la vitesse d'exécution d'Excel en général n'est pas vraiment lié à ton ordinateur lui-même.. Par exemple, VBA s'exécute en mono-thread, ce qui signifie qu'à même fréquence pour un processeur 4 cores et un mono-core, tu ne verras pas ou peu de différence. Pour t'en persuader, lance une macro relativement longue, puis rends-toi dans le gestionnaire des tâches. Si ton processeur est un 4 core par exemple, Excel n'utilisera que 25 % du processeur, soit un thread à 100 % actif.

En espèrant avoir pu t'éclairer un peu. :)
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
247
Réponses
2
Affichages
288

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote