Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lenteur dans l'affectation des cellules

4 réponses
Avatar
defluc
Bonjour,

J'ai une macro qui affecte une valeur à des cellules mais le processus
est très lent.

For i = 0 To NbrElem - 1
For j = 2 To NbrProjets + 1
If Cells(CriterLastLine + 1, j) = AbregList(i) Then
Cells(CriterLastLine + 2, j) = NoOrder
' NoOrder = NoOrder + 1
End If
Next
NoOrder = NoOrder + 1
Next

Je vois les cellules se remplir une à une et cela dure 5 secondes pour
pour 20 cellules.

Une idée pour accélérer le processus ?

Merci d'avance

4 réponses

Avatar
Daniel.C
Bonjour.
Application.ScreenUpdating = False
t'empêchera de les voir se remplir et accélèrera le processus. Tu peux
aussi essayer de mettre le calcul en mode manuel.
Cordialement.
Daniel

Bonjour,

J'ai une macro qui affecte une valeur à des cellules mais le processus est
très lent.

For i = 0 To NbrElem - 1
For j = 2 To NbrProjets + 1
If Cells(CriterLastLine + 1, j) = AbregList(i) Then
Cells(CriterLastLine + 2, j) = NoOrder
' NoOrder = NoOrder + 1
End If
Next
NoOrder = NoOrder + 1
Next

Je vois les cellules se remplir une à une et cela dure 5 secondes pour pour
20 cellules.

Une idée pour accélérer le processus ?

Merci d'avance


Avatar
Jacky
Bonsoir,

Essaie avec un "exit for" juste avant le End if

--
Salutations
JJ


"defluc" a écrit dans le message de news:

Bonjour,

J'ai une macro qui affecte une valeur à des cellules mais le processus est
très lent.

For i = 0 To NbrElem - 1
For j = 2 To NbrProjets + 1
If Cells(CriterLastLine + 1, j) = AbregList(i) Then
Cells(CriterLastLine + 2, j) = NoOrder
' NoOrder = NoOrder + 1
End If
Next
NoOrder = NoOrder + 1
Next

Je vois les cellules se remplir une à une et cela dure 5 secondes pour
pour 20 cellules.

Une idée pour accélérer le processus ?

Merci d'avance


Avatar
defluc
Daniel.C a écrit :
Bonjour.
Application.ScreenUpdating = False
t'empêchera de les voir se remplir et accélèrera le processus. Tu peux
aussi essayer de mettre le calcul en mode manuel.
Cordialement.
Daniel

Bonjour,

J'ai une macro qui affecte une valeur à des cellules mais le processus
est très lent.

For i = 0 To NbrElem - 1
For j = 2 To NbrProjets + 1
If Cells(CriterLastLine + 1, j) = AbregList(i) Then
Cells(CriterLastLine + 2, j) = NoOrder
' NoOrder = NoOrder + 1
End If
Next
NoOrder = NoOrder + 1
Next

Je vois les cellules se remplir une à une et cela dure 5 secondes pour
pour 20 cellules.

Une idée pour accélérer le processus ?

Merci d'avance






Il y a très longtemps que je n'avais plus programmé de macro.

"exit for" fait gagner 1 seconde.
Je savais bien que la désactivation de l'affichage accélérait
l'exécution mais je n'avais plus l'instruction en mémoire.
«ScreenUpdating» fait encore gagner 2 secondes.

Merci à tous
Avatar
MichDenis
Bonjour Defluc,

Il y a toujours la désactivation des événements...si tu as des procédures événementielles
dans ton fichiers.

En début de macro, tu écris :

Application.enableevents = false


En fin de macro :
Application.enableevents = true





"defluc" a écrit dans le message de groupe de discussion :

Daniel.C a écrit :
Bonjour.
Application.ScreenUpdating = False
t'empêchera de les voir se remplir et accélèrera le processus. Tu peux
aussi essayer de mettre le calcul en mode manuel.
Cordialement.
Daniel

Bonjour,

J'ai une macro qui affecte une valeur à des cellules mais le processus
est très lent.

For i = 0 To NbrElem - 1
For j = 2 To NbrProjets + 1
If Cells(CriterLastLine + 1, j) = AbregList(i) Then
Cells(CriterLastLine + 2, j) = NoOrder
' NoOrder = NoOrder + 1
End If
Next
NoOrder = NoOrder + 1
Next

Je vois les cellules se remplir une à une et cela dure 5 secondes pour
pour 20 cellules.

Une idée pour accélérer le processus ?

Merci d'avance






Il y a très longtemps que je n'avais plus programmé de macro.

"exit for" fait gagner 1 seconde.
Je savais bien que la désactivation de l'affichage accélérait
l'exécution mais je n'avais plus l'instruction en mémoire.
«ScreenUpdating» fait encore gagner 2 secondes.

Merci à tous