Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Optimisation macro

  • Initiateur de la discussion Initiateur de la discussion VTLE
  • 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 !

V

VTLE

Guest
Bonjour,

j'ai crée une macro qui teste chaque ligne d'un tableau afin d'en modifier certaine colonne en fonction du résultat de ce test. Ma macro fonctionne mais le problème c'est que mon tableau fait entre 30 000 et 50 000 ligne et ces tests prennent beaucoup de temps.


voici ma macro:

sub decal_col()

Set dbt = Range("F:F").Find("", lookat:=xlWhole)
ligne = dbt.Row 'renvoi la dernière ligne du tableau
colonne = dbt.Column

For i = 2 To ligne

If Range("B" & i).Value = "Direction Etudes" Then
Range("C" & i & ":E" & i).Select
Selection.Copy
Range("B" & i).Select
ActiveSheet.Paste
Else
End If
Next i
end sub

Ma question : Auriez un autre moyen, plus rapide, de faire cette macro ?

Cordialement,

VTLE
 
Re : Optimisation macro

Bonjour,

essaye comme ceci, non testé..;
Code:
Sub decal_col()
Application.ScreenUpdating = False
Set dbt = Range("F:F").Find("", lookat:=xlWhole)
ligne = dbt.Row 'renvoi la dernière ligne du tableau
colonne = dbt.Column
For i = 2 To ligne
    If Range("B" & i).Value = "Direction Etudes" Then Range("C" & i & ":E" & i).Copy Range("B" & i)
Next i
Application.ScreenUpdating = True
End Sub

bonne journée
@+
 
Re : Optimisation macro

Re bonjour pierrot,

Eh bien je viens juste de tester ta macro et le résultat est excellent !!! Merci beaucoup

Pour info ma macro prenait 2min pour environ 25 0000 lignes à tester, et la tienne prend seulement 30 secondes !

je ne connaissais pas cette instruction pour copier coller, elle est très efficace.

Bonne journée et merci encore
 
Re : Optimisation macro

Bonjour VTLE, Bonjour Pierrot,

Pour info, je pense que le plus grand gain de temps est généré par

Code:
Application.ScreenUpdating = False
...
Application.ScreenUpdating = True

ça désactive l'affichage des actions à l'écran et donc ça accélère grandement les traitements
 
Re : Optimisation macro

Re, bonjour toto

à noter également que le fait de selectionner des cellules / feuilles prend également beaucoup de ressource.... En vba rarement utile....

bon après midi
@+
 
Dernière édition:
Re : Optimisation macro

En effet j'ai testé sans les "Application.ScreenUpdating" et ca prend un peu plus de temps. La combinaison de cette instruction et celle qui évite de selectionner feuille/cellule offre un bon gain de temps!

Merci à tous en tout cas!
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
588
Réponses
1
Affichages
575
Réponses
2
Affichages
673
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…