Réduire le temps que passe Excel sur l'excution d'une macro ?
5 réponses
eric
Bonjour,
J'aimerais réduire le temps que passe excel à faire marcher ma macro (> 10
minutes).
En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont
remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina()
For i = 2 To 5000
If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then
Rows(i).Delete
Else
End If
Next i
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JB
Bonjour
Sub Macro1() Application.Calculation = xlManual Application.ScreenUpdating = False For i = 5000 To 2 Step -1 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Next i Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub
J'aimerais réduire le temps que passe excel à faire marcher ma macro ( > 10 minutes). En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") The n Rows(i).Delete Else End If Next i End Sub
Merci d'avance, Eric
Bonjour
Sub Macro1()
Application.Calculation = xlManual
Application.ScreenUpdating = False
For i = 5000 To 2 Step -1
If Sheets("plom").Range("C" & i) <>
Sheets("date_du_jour").Range("A1") Then Rows(i).Delete
Next i
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
On 18 jan, 15:34, "eric" <fno...@dmail.com> wrote:
Bonjour,
J'aimerais réduire le temps que passe excel à faire marcher ma macro ( > 10
minutes).
En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont
remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina()
For i = 2 To 5000
If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") The n
Rows(i).Delete
Else
End If
Next i
End Sub
Sub Macro1() Application.Calculation = xlManual Application.ScreenUpdating = False For i = 5000 To 2 Step -1 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Next i Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub
J'aimerais réduire le temps que passe excel à faire marcher ma macro ( > 10 minutes). En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") The n Rows(i).Delete Else End If Next i End Sub
Merci d'avance, Eric
eric
Bonjour JB, Merci beaucoup. C'est fantastique! ;) Bon week-end, Eric
Bonjour JB,
Merci beaucoup. C'est fantastique! ;)
Bon week-end,
Eric
Bonjour JB, Merci beaucoup. C'est fantastique! ;) Bon week-end, Eric
Jacky
Bonsoir, Essaie comme cela '------------ Sub fina() Application.ScreenUpdating = False Application.Calculation = xlManual For i = Sheets("plom").[c65536].End(3).Row To 2 Step -1 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete End If Next i Application.Calculation = xlAutomatic End Sub '------- Ps. Ce sont les lignes de la feuille active qui sont supprimer.
-- Salutations JJ
"eric" a écrit dans le message de news: 4790b923$0$31920$
Bonjour,
J'aimerais réduire le temps que passe excel à faire marcher ma macro (> 10 minutes). En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Else End If Next i End Sub
Merci d'avance, Eric
Bonsoir,
Essaie comme cela
'------------
Sub fina()
Application.ScreenUpdating = False
Application.Calculation = xlManual
For i = Sheets("plom").[c65536].End(3).Row To 2 Step -1
If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then
Rows(i).Delete
End If
Next i
Application.Calculation = xlAutomatic
End Sub
'-------
Ps. Ce sont les lignes de la feuille active qui sont supprimer.
--
Salutations
JJ
"eric" <fnoalp@dmail.com> a écrit dans le message de news:
4790b923$0$31920$426a34cc@news.free.fr...
Bonjour,
J'aimerais réduire le temps que passe excel à faire marcher ma macro (> 10
minutes).
En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont
remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina()
For i = 2 To 5000
If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1")
Then
Rows(i).Delete
Else
End If
Next i
End Sub
Bonsoir, Essaie comme cela '------------ Sub fina() Application.ScreenUpdating = False Application.Calculation = xlManual For i = Sheets("plom").[c65536].End(3).Row To 2 Step -1 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete End If Next i Application.Calculation = xlAutomatic End Sub '------- Ps. Ce sont les lignes de la feuille active qui sont supprimer.
-- Salutations JJ
"eric" a écrit dans le message de news: 4790b923$0$31920$
Bonjour,
J'aimerais réduire le temps que passe excel à faire marcher ma macro (> 10 minutes). En fait je ne connais pas à l'avance le nombre de cellules "Ci" qui sont remplies, donc j'ai mis 5000 pour être sûr d'englober le maximum.
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Else End If Next i End Sub
Merci d'avance, Eric
Brunos
Bonjour Eric
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Else End If Next i End Sub
Ton code risque de produire un résultat imprévisible, étant donné que tu parcours de haut en bas une plage dont tu supprimes des lignes. Pour éviter ce problème, soit tu prends le tableau par le bas en haut comme le propose Jacky, soit tu parcoures ta plage avec une boucle For Each Next : For Each Cellule in Range([C2], [C2].End(xlDown)) ... Next
Mais je ne sais pas ce que tu veux obtenir, à toi de voir !
Brunos
"Jacky" a écrit dans le message de news: eH%
Bonsoir, Essaie comme cela '------------ Sub fina() Application.ScreenUpdating = False Application.Calculation = xlManual For i = Sheets("plom").[c65536].End(3).Row To 2 Step -1 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete End If Next i Application.Calculation = xlAutomatic End Sub '------- Ps. Ce sont les lignes de la feuille active qui sont supprimer.
-- Salutations JJ
"eric" a icrit dans le message de news: 4790b923$0$31920$
Bonjour,
J'aimerais riduire le temps que passe excel ` faire marcher ma macro (> 10 minutes). En fait je ne connais pas ` l'avance le nombre de cellules "Ci" qui sont remplies, donc j'ai mis 5000 pour jtre s{r d'englober le maximum.
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Else End If Next i End Sub
Merci d'avance, Eric
Bonjour Eric
Sub fina()
For i = 2 To 5000
If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1")
Then
Rows(i).Delete
Else
End If
Next i
End Sub
Ton code risque de produire un résultat imprévisible, étant donné que tu
parcours de haut en bas une plage dont tu supprimes des lignes.
Pour éviter ce problème, soit tu prends le tableau par le bas en haut
comme le propose Jacky, soit tu parcoures ta plage avec une boucle For
Each Next :
For Each Cellule in Range([C2], [C2].End(xlDown))
...
Next
Mais je ne sais pas ce que tu veux obtenir, à toi de voir !
Brunos
"Jacky" <Dupond@marcel.fr> a écrit dans le message de news:
eH%23g5PeWIHA.4880@TK2MSFTNGP03.phx.gbl...
Bonsoir,
Essaie comme cela
'------------
Sub fina()
Application.ScreenUpdating = False
Application.Calculation = xlManual
For i = Sheets("plom").[c65536].End(3).Row To 2 Step -1
If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1")
Then
Rows(i).Delete
End If
Next i
Application.Calculation = xlAutomatic
End Sub
'-------
Ps. Ce sont les lignes de la feuille active qui sont supprimer.
--
Salutations
JJ
"eric" <fnoalp@dmail.com> a icrit dans le message de news:
4790b923$0$31920$426a34cc@news.free.fr...
Bonjour,
J'aimerais riduire le temps que passe excel ` faire marcher ma macro
(> 10 minutes).
En fait je ne connais pas ` l'avance le nombre de cellules "Ci" qui
sont remplies, donc j'ai mis 5000 pour jtre s{r d'englober le
maximum.
Sub fina()
For i = 2 To 5000
If Sheets("plom").Range("C" & i) <>
Sheets("date_du_jour").Range("A1") Then
Rows(i).Delete
Else
End If
Next i
End Sub
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Else End If Next i End Sub
Ton code risque de produire un résultat imprévisible, étant donné que tu parcours de haut en bas une plage dont tu supprimes des lignes. Pour éviter ce problème, soit tu prends le tableau par le bas en haut comme le propose Jacky, soit tu parcoures ta plage avec une boucle For Each Next : For Each Cellule in Range([C2], [C2].End(xlDown)) ... Next
Mais je ne sais pas ce que tu veux obtenir, à toi de voir !
Brunos
"Jacky" a écrit dans le message de news: eH%
Bonsoir, Essaie comme cela '------------ Sub fina() Application.ScreenUpdating = False Application.Calculation = xlManual For i = Sheets("plom").[c65536].End(3).Row To 2 Step -1 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete End If Next i Application.Calculation = xlAutomatic End Sub '------- Ps. Ce sont les lignes de la feuille active qui sont supprimer.
-- Salutations JJ
"eric" a icrit dans le message de news: 4790b923$0$31920$
Bonjour,
J'aimerais riduire le temps que passe excel ` faire marcher ma macro (> 10 minutes). En fait je ne connais pas ` l'avance le nombre de cellules "Ci" qui sont remplies, donc j'ai mis 5000 pour jtre s{r d'englober le maximum.
Sub fina() For i = 2 To 5000 If Sheets("plom").Range("C" & i) <> Sheets("date_du_jour").Range("A1") Then Rows(i).Delete Else End If Next i End Sub
Merci d'avance, Eric
Brunos
Correction, j'ai dit une bêtise, Seule la méthode de Jacky (parcourir de bas en haut) est valable. Brunos
Ton code risque de produire un résultat imprévisible, étant donné que tu parcours de haut en bas une plage dont tu supprimes des lignes. Pour éviter ce problème, soit tu prends le tableau par le bas en haut comme le propose Jacky, soit tu parcoures ta plage avec une boucle For Each Next : For Each Cellule in Range([C2], [C2].End(xlDown)) ... Next
Correction, j'ai dit une bêtise,
Seule la méthode de Jacky (parcourir de bas en haut) est valable.
Brunos
Ton code risque de produire un résultat imprévisible, étant donné que
tu parcours de haut en bas une plage dont tu supprimes des lignes.
Pour éviter ce problème, soit tu prends le tableau par le bas en haut
comme le propose Jacky, soit tu parcoures ta plage avec une boucle For
Each Next :
For Each Cellule in Range([C2], [C2].End(xlDown))
...
Next
Correction, j'ai dit une bêtise, Seule la méthode de Jacky (parcourir de bas en haut) est valable. Brunos
Ton code risque de produire un résultat imprévisible, étant donné que tu parcours de haut en bas une plage dont tu supprimes des lignes. Pour éviter ce problème, soit tu prends le tableau par le bas en haut comme le propose Jacky, soit tu parcoures ta plage avec une boucle For Each Next : For Each Cellule in Range([C2], [C2].End(xlDown)) ... Next