Question: macro très longue à exécuter si obligation de lire des cellules-formules

Dogde

XLDnaute Nouveau
Bonjour !

J'aurais une petite question, plus par curiosité que par "utilité", j'ai beaucoup de formules a écrire pour résoudre un problème sous Excel dont certaines doivent être faites par macro (par boucles etc...).

Je pensais écrire toutes les formules qui ne méritaient pas une macro directement sur ma feuille Excel (comme les moyennes d'une colonne, les formules avec cos, sin, etc...) pour alléger ma macro mais cela tournait beaucoup plus lentement (pour finalement planter).

Pour créer ma colonne dans ma macro, j'avais besoin de lire les valeurs des cellules qui avaient été crées par formules directement dans la feuille Excel, et cela a pris un temps fou ! J'ai fait un test, en copiant et collant les valeurs de ma colonne (et donc les cellules devenaient juste un nombre et non plus une formule) et cela roulait normalement.

J'en suis donc venu a la conclusion que pour lire une colonne composée de formules dans une macro, cela était très long et buguait.

Je n'ai donc pas le choix, soit je tape toutes mes formules dans ma macro soit je fais tout sur la feuille Excel. Avez vous eu le même genre de problème ou c'est juste mon ordinateur qui est très lent ?

Moi qui pensait alléger ma macro, c'est raté!

Merci =)
 

Staple1600

XLDnaute Barbatruc
Re : Question: macro très longue à exécuter si obligation de lire des cellules-formul

Bonjour à tous

En attendant le fichier joint, vois ce qui se passe si tu désactives le recalcul et le rafraichissement de l'écran.
Code:
Sub b()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
'ton code
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 

Dogde

XLDnaute Nouveau
Re : Question: macro très longue à exécuter si obligation de lire des cellules-formul

Bonjour, désolé pour la réponse tardive !

Le fichier étant très gros voilà un lien:

Partage-Facile : Fichier exemple.xlsm.html

En fait, sheet 1 représente mes données, sheet 2 représente tous les calculs intermédiaires (sheet3 donnera le résultat).

Comme vous pouvez le voir dans le code, il n'y a pas beaucoup d'instructions mais il est nécessaire de lire les colonnes déjà créées dans sheet2.

Première valeur du jour = 26
Latitude = 54
(Deux choses qu'une intput box doit demander).

En gros, vu que cette version plante je suis obligé de créer toutes les colonnes dans la macro...

Staple1600: Avec ton code, ça met du temps mais ça marche =) tu penses que le problème vient de l'affichage à l'écran ??
 

Misange

XLDnaute Barbatruc
Re : Question: macro très longue à exécuter si obligation de lire des cellules-formul

Bonjour
Il est toujours plus rapide de faire le calcul par macro une fois et de coller le résultat dans une feuille de calcul plutot que d'obliger excel à recalculer toute la feuille chaque fois qu'une cellule est modifiée. L'idéal étant évidemment de restreindre au max la zone à modifier par macro. Mettre par macro une formule dans une feuille n'a aucun intérêt en terme de rapidité ou d'efficacité en revanche. Il faut faire le calcul dans la macro et coller le résultat.
La solution préconisée par Staples est très très efficace si tu as des formules qui font référence à des cellules dont tu modifies le contenu par macro : mettre le mode de calcul sur manuel évite à excel de faire des tas de recalculs inutiles. Ces calculs ne sont faits qu'une seule fois, lorsque toutes les données ont été injectées dans la feuille. Le screenupdating=false est aussi utile mais c'est le mode de calcul manuel qui est le plus générateur d'économies de temps en général.
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87