Execution de macro très lente

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

Vorens

XLDnaute Occasionnel
Bonjour,


J'ai du réaliser une macro relativement conéquente, elle à pour tâche d'importer des données, les traiter (purification d'état parasite), les stocker dans des base de données, faire des moyennes, des graphiques etc.

L'execution était relativement rapide mais j'ai du ajouter une fonction qui copie / colle des cellules d'une feuille à l'autre. Cette fonction est lente car intégrée au millieu de la macro. Le programme à du mal à ouvrire les feuilles pour y aller chercher les données c'est a ce moment qu'il prend 3-4 secondes à chaque fois.

Connaissez vous un moyen pour augmenter la vitesse d'execution d'un macro.

Es ce que par exemple un Sheet("blabla").activate est plus lent qu'un sheet("blabla").select ? Ou autre instruction à éviter.

Cordialement
 
Re : Execution de macro très lente

Salut Vorens et le forum
Juste une question : tu attends quoi comme réponse ?
Oui, on peut vraisemblablement l'exécuter plus rapidement, mais comme ton code est du type secret défense, je ne suis pas habilité à y toucher.
A+
 
Re : Execution de macro très lente

Bonjour
Il faudrait voir le code.
Sinon les 3 instructions suivantes sont susceptible d'accélérer significativement les codes déjà assez bien écrits:
VB:
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Ne pas oublier de repasser le 1er à xlCalculationAutomatic et surtout le dernier à True en fin d'exécution.
À+
 
Re : Execution de macro très lente

Re Vorens, Bonjour Gorfael, Dranreb,
Pour "accélérer" une macro il faut commencé par éviter les select.
Si je prend un code qu'il y avait dans un de tes exemples:
VB:
Sub Macro2()
    Range("D3").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("A1:D2").Select
    Range("D1").Activate
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("A1").Select
    Sheets("Feuil1").Select
    Selection.Copy
    Sheets("Feuil2").Select
    ActiveSheet.Paste
End Sub
On peux commencer par le nettoyer. Ce qui donne :
VB:
Sub Macro3()
    Sheets("Feuil2").Range("A1:D2").ClearContents
    Sheets("Feuil1").Range("D3").Copy
    Sheets("Feuil2").Activate
    Sheets("Feuil2").Range("A1").Select
    ActiveSheet.Paste
End Sub

Ensuite on peux l'améliorer :
VB:
Sub Macro4()
With Sheets("Feuil2")
    .Range("A1:D2").ClearContents
    .Range("A1").Value = Sheets("Feuil1").Range("D3")
End With
End Sub

Mais pour tout ça, il faut avoir... ...un code (dans un exemple)
Cordialement
 
Dernière édition:
Re : Execution de macro très lente

Re,

Merci pour vos réponses.

Il est vrai que ma question n'était pas très claire et que sans code c'est difficil, mais Efgé m'a donné les indications qu'il me fallait, je vais pouvoir purifier le code avec les conseils donné.

Merci encore !
 
- 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
9
Affichages
974
M
Réponses
5
Affichages
2 K
micky27
M
P
Réponses
2
Affichages
2 K
P
Retour