• Initiateur de la discussion Initiateur de la discussion Mers
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Mers

XLDnaute Junior
Bonjour à tous,

J'ai copié le contenu d'une macro sur le forum afin de supprimer des lignes inutiles en fonction de certaines valeurs. Mon problème est que, au moment où je vous écrit, ça fait 4 minutes que ma macro roule!!!😡

Voici une partie de la macro:
Code:
For i = Range("a65000").End(xlUp).Row To 1 Step -1
    If Range("d" & i).Value = "" Or Range("o" & i).Value = False Then
    Rows(i).Delete
    End If
    Next i

J'ai tenté de remplacé Range("a65000") par Rang("a6000") car je n'a pas de valeurs passé cette ligne mais ça ne semble pas rien changer.

Merci de m'indiquer ce qui ne va pas.

M.
 
Re : Trop long!!!

A-priori pas d'erreur.
Tu peux l'accélerer en desactivant le rafraichissement écran et le calcul automatique.

à mettre au début :
Application.ScreenUpdating = False
Application.Calculation = xlManual

rétablir à la fin :
Application.Calculation = xlAutomatic
Calculate
Application.ScreenUpdating = True

eric
 
Dernière édition:
Re : Trop long!!!

A-priori pas d'erreur.
Tu peux l'accélerer en desactivant le rafraichissement écran et le calcul automatique.

à mettre au début :
Application.ScreenUpdating = False
Application.Calculation = xlManual

rétablir à la fin :
Application.Calculation = xlAutomatic
Calculate
Application.ScreenUpdating = True

eric

Merci Éric,

Est-ce que fait d'écrire Range("A6000") devrait avoir un impact positif aussi?

M.
 
Re : Trop long!!!

A-priori pas d'erreur.
Tu peux l'accélerer en desactivant le rafraichissement écran et le calcul automatique.

à mettre au début :
Application.ScreenUpdating = False
Application.Calculation = xlManual

rétablir à la fin :
Application.Calculation = xlAutomatic
Calculate
Application.ScreenUpdating = True

eric

WOW!!! Je suis partie de 5 minutes à 8 secondes!!!

Merci!

M.
 
Re : Trop long!!!

Ben tu vois ;-)
Sinon pour répondre à ta question c'est non, car avec range("A65536").end(xlup) c'est optimisé au maximum car seules les lignes réellement occupées sont traitées (dans la mesure ou la dernière ligne à bien sa cellule en colonne A remplie).
Je suppose que tu avais beaucoup de formules et c'est surtout le Application.Calculation = xlManual qui a fait la différence.
eric
 
Re : Trop long!!!

Re...
Ben tu vois ;-)
Sinon pour répondre à ta question c'est non, car avec range("A65536").end(xlup) c'est optimisé au maximum car seules les lignes réellement occupées sont traitées (dans la mesure ou la dernière ligne à bien sa cellule en colonne A remplie).
Je suppose que tu avais beaucoup de formules et c'est surtout le Application.Calculation = xlManual qui a fait la différence.
eric
Entièrement d'accord avec vous, eriiiic !
Mais je préfère Cells(Rows.Count, 1) à Range("A65536") car le nombre de lignes d'une feuille varie avec la version d'Excel.​
ROGER2327
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
904
Réponses
2
Affichages
525
Réponses
4
Affichages
728
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
902
Retour