Macro prend beaucoup trop de temps

Bonjour,

J'ai construit un code pour construire un tableau a partir d'un fichier excel sans l'ouvrir pour optimiser le traitement mais je me rends compte seulement après coup que l’exécution de ce code est très lent. Question, comment faire pour réduire drastiquement ce temps d’exécution pour obtenir le même résultat ?

Code :

Sub remp_database()

Erase tabldata

'chemin du fichier database

Fichier = "'D:\Documents\[database.xlsm]Feuil1'!"

nbligne = 32000

nbcolonne = 6

'peuple un tableau database

ReDim tabldata(nbligne - 1, nbcolonne - 1)

For j = 0 To UBound(tabldata, 2)

For i = 0 To UBound(tabldata, 1)

tabldata(i, j) = ExecuteExcel4Macro(Fichier & "R" & i + 1 & "C" & j + 1)

Next i

Next j

End Sub

Merci de vos lumieres....

Juste pour preciser le "long",

Si je précise un nombre de ligne a 1000, il s’exécute en 5 minutes donc pour 32000 lignes, je vous laisse vous imaginer le temps que ça prends...

Bonjour

Une solution simple

Ouvres le fichier

Récupères directement ce que tu as besoin

Refermes le fichier

Je sais qu'il existe d'autre méthode, dont je ne connais pas le fonctionnement, pour lire dans un fichier fermé

Tu penses donc que c'est l'instruction ExecuteExcel4Macro qui ralenti le code ?

Je vais essayer ta solution, on va voir ce que ça donne...

Bonjour

Liocor a écrit :

Tu penses donc que c'est l'instruction ExecuteExcel4Macro qui ralenti le code ?

Fortes changes chances que oui

Le programme exécute 32000 x 6 cette macro

Bien qu'elle est optimisée au maximum (du moins je le pense) cela prend un certain temps

Mais quoiqu'il en soit, ton test devrait répondre à ta question

Effectivement, je viens de faire le test, le jour et la nuit.... je pensais pas que cette instruction était si lente...a proscrire donc

Comparatif :

1000 lignes x 6 col -> 5 mins avec instruction Excel4

32000 lignes x 6 col -> 10 sec avec ouverture du fichier, routine et fermeture du fichier.

Merci de ton aide

Rechercher des sujets similaires à "macro prend beaucoup trop temps"