Bonjour, je cherche à optimiser un code qui me prends près d'une heure à exécuter
Il s'agit de multiples boucles dans lesquels s'effectuent des calculs.
J'ai identifié le bout de code qui me posait problème : L'écriture du résultat de la macro dans les cellules. Voici bout de code modifié pour le besoins :
Voici le fichier d'exemple : EssaiEcriredansCell.zip
Et voici le code, si cela est suffisant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub EcriredansCell() Dim TablEssai Dim i As Integer, j As Integer Dim sw As StopWatch Set sw = New StopWatch sw.StartTimer For i = 1 To 50 TablEssai = Array(Int((20 * Rnd) + 1), Int((40 * Rnd) + 1), Int((60 * Rnd) + 1), Int((80 * Rnd) + 1), Int((100 * Rnd) + 1)) For j = LBound(TablEssai) To UBound(TablEssai) Range("A1").Offset(i, j).Value = TablEssai(j) Next j Next i Debug.Print "Ce code s'exécute en : " & sw.EndTimer & "milliseconds" End Sub
Pour mesurer la durée d'exécution : il faut 50 millisecondes au code pour s'exécuter.
Le problème, c'est que mon tableau fait 2000 lignes et 60 colonnes, avec des formules, etc, et il lui faut, pour cet exemple de 50 lignes : 42 secondes... Et même en utilisant le fichier d'exemple, lorsque le fichier original (9Mo) est ouvert, cela prends 42 secondes. Je pense donc que c'est un problème de ressource PC.
Le fichier original contiens des données confidentielles que je ne peux pas partager, mais je cherche un moyen d'écrire moins souvent dans les cases, peut-être en copiant les données lignes par ligne (5 à la fois) ? Cependant, je ne connais pas le code...
PS : Je précise quene modifie pas la durée d'exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.ScreenUpdate = False
Merci de votre aide.
Korleone.
Partager