Excel qui rame

Cazinos

XLDnaute Occasionnel
Bonsoir le forum,

J'ai un classeur avec pas mal de macro et de ligne à traiter alors quand je lance une macro ca rame pas mal.

J'aimerai savoir comment faire pour éviter cela

J'ai windows xp avec excel 2002
2 g de mémoire vive

merci

Cazinos
 

vbacrumble

XLDnaute Accro
Re : Excel qui rame

Bonsoir suistrop


Un exemple avec et sans

Code:
Sub Macro1() 'avec
'
' Macro8 Macro
' Macro enregistrée le 18/02/2009 par VBACrumble
'

'
    Sheets("Feuil1").Activate
    Range("A1").FormulaR1C1 = "=RAND()"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A100"), Type:=xlFillDefault
    Range("A1:A100").Select
End Sub
Code:
Sub MacroSansSelect() 'sans
Sheets(1).Range("A1:A100").FormulaLocal = "=ALEA()"
End Sub

A+
 

Cousinhub

XLDnaute Barbatruc
Re : Excel qui rame

Bonsoir,

il y a quelques temps, sur un autre forum, une personne demandait la mise en place d'un état d'avancement de la macro (une barre de progression)

Son code durait un peu plus de 1 Mn 20 S

Après suppression des .Select, de quelques adaptations, son code ne durait plus que 4.5 secondes....

A toi de voir.....
 
Dernière édition:

vbacrumble

XLDnaute Accro
Re : Excel qui rame

Re à tous

suistrop:
Je conseille d'éviter les Select & cie car j'ai lu plusieurs fois et selon plusieurs sources que c'était une habitude à proscrire et que cela accélérait notablement le temps d'exécution du code VBA.

Pour t'en convaincre, parcours le web relatif à ce sujet, tu verras par toi-même ce qu'il en est.

A+
 

xstier

XLDnaute Junior
Re : Excel qui rame

Bonjour

je trouve ce post intéressant cela m'amène à me poser la question suivante

Quelles méthodes peut on utiliser pour remplacer les select ou les activate

cela permettrai pour moi d'améliorer beaucoup de mes codes.

Merci aux XLDnautes pour leurs réponse

Xavier
 

vbacrumble

XLDnaute Accro
Re : Excel qui rame

Re


Pour ceux qui lisent l'anglais

Voici les 21 règles d'or de VBA selon Dave Hawley

suistrop: regardes la règle N° 5

VBA CODE GOLDEN RULES

1. Turn on Option Explicit. Tools>Options - Editor - Require variable declaration in the VBE. Then Educate Yourself on Their Proper Use and Data Types.
2. Split Procedures Into Logical Seperate Procedures and use Call or Run When Needed.
3. Make Good use Of Functions so They Can be Called When Needed and With Variable Elements Passed.
4. Try & Keep all Related Procedures in the Same Module. Excel Compiles Each Module as a Procedure in the Module in Run.
5. You Rarely Need to Select or Activate any Objects to Change Their Properties or Access Their Methods. If you MUST Select a Range Object, Use GoTo.
6. Use a Sheet CodeName Over The Tab Name or Index Number.
7. Avoid Loops. Make Good use of Much Faster Alternatives Like Find (Find Method), AutoFilter, AdvancedFilter, SpecialCells etc.
8. Loops Through Object Collections are the Fastest, Compared to Other Loop Types.
9. Don't Assume Code is Needed. Often a Worksheet Function is FAR better and More Efficient.
10. Avoid Using Custom Functions When a Built-in Worksheet Function can be Used. Even Deeply Nested Worksheet Function are Often a Lot More Effiecient Than Custom Function Written in VBA.
11. Avoid Macros That Delete Rows/Column/Cells. Make Use of AutoFilter, AdvancedFilter or Sort.
12. Turn Off Calculations via Code for Slow Macros. See Macro Code via Manual Calculation. Assume Your Macro Will Fail, so Turn Back on In any Error Trapping.
13. Use VbNullString Over ""
14. Turn off Sheet/Workbook Events if They are Not Needed While Macro is Running. That is, Application.EnableEvents = False and Don't Forget to Turn Back on and Assume Your Macro Will Fail, so Turn Back on In any Error Trapping.
15. Make Good use of With Statements When Working With Objects.
16. Select Case is Often Better Than Mutiple If Else Statements.
17. IIf is Slower Than If Else.
18. Use Boolean Logic Over If Statements. E.g bYesNo = Range("MyValue") = 5.
19. Use Named Ranges Over Cell Addresses.
20. Use Meaningful Variable Names and Precede Them With Their Data Type. E.g lngRowCount NOT Meaningless Names Like x, y, z etc.
21. Capitalize at Least 1 Character in Variable Names and When Using in a Procedure use ALL Lower Case. Excel Will Convert as To the Case Used When Dimensioned.
 

Cousinhub

XLDnaute Barbatruc
Re : Excel qui rame

Re-,

comme le dit vbacrumble, tu peux facilement remplacer les .Select

exemple, copie d'une cellule de la feuille active vers la première cellule non vide de la feuille "Récap"

Code:
Sub copie()
Dim DerLig As Long
With Sheets("Récap")
    DerLig = .[A65000].End(xlUp).Row + 1
    Range("A2").Copy .Cells(DerLig, 1)
End With
End Sub
 

Cazinos

XLDnaute Occasionnel
Re : Excel qui rame

Bonsoir,

Merci pour vos réponses j'utilise le magnéto de VBA pour contruire mes macros

Je suis pas un pro je me débrouille je vais faire du nettoyage dans chaque macro pour gagner du temps sinon je dois attendre environ 10 minutes ca rame

Cazinos
 

Discussions similaires

Réponses
1
Affichages
153