Bonjour,
L'execution de mes macros sont tres lentes.
Les macros fonctionnent tres bien sur un autre poste et mon pc ne rame pas
Heeelp!!!!!!!
:bug:
Version imprimable
Bonjour,
L'execution de mes macros sont tres lentes.
Les macros fonctionnent tres bien sur un autre poste et mon pc ne rame pas
Heeelp!!!!!!!
:bug:
On peut pas te dire pourquoi ça rame si tu ne nous dis rien sur tes macros, comme:
-le code
-la configuration des PC
-etc...
Slt,
les deux pc pris en test sont identiques (Dell, core2Duo, 2.4GHZ).
J'utilise XL 2003 et des macros visual Basic "classiques".
Il serait bien de voir ces codes "classiques"...
Bonsoir,
Quelque chose qui peut aider. En début de code, faire :
et en fin de code :Code:
1
2
3 Dim Mode_calcul As Long Application.ScreenUpdating = False Mode_calcul = Application.Calculation
ça peut aider à accélérer un code où on manipule pas mal de graphiques par exemple.Code:
1
2Application.Calculation = Mode_calcul Application.ScreenUpdating = True
Si nécessaire, insérer un "Calculate" à des endroits bien précis du code si besoin (si la suite nécessite le résultat d'un calcul fait sous Excel).
Bonne soirée,
Didier
Oups !!! Merci Pierre, j'ai effectivement oublié le plus important !
Didier
Voici un exemple(à la con mais c'est un exemple!!!):
Mais peut importe la boucle, la macro ou meme le fichier dans lequel se trouve la macro, le pb est le meme.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Do While ActiveCell <> "" Cumulcritere = 0 cpteurligne = 0 Do While ActiveCell = ActiveCell.Offset(1, 0) Cumulcritere = Cumulcritere + ActiveCell.Offset(0, 7).Value cpteurligne = cpteurligne + 1 ActiveCell.Offset(1, 0).Select Loop Cumulcritere = Cumulcritere + ActiveCell.Offset(0, 7).Value ActiveCell.Offset(-cpteurligne, 7).Select ActiveCell.FormulaR1C1 = Cumulcritere If cpteurligne <> 0 Then Range(ActiveCell.Offset(1, -7), ActiveCell.Offset(cpteurligne, 50)).Select Selection.Delete Shift:=xlUp ActiveCell.Offset(0, 0).Select Else ActiveCell.Offset(1, -7).Select End If Loop
J'ai deja essayé le screen updating mais cela ne changeait rien.
Il est préférable de donner le code réel qui pose problème, plutôt qu'un exemple "à la con" ;), sinon, on va devoir supposer un tas de possibilités, et donner des réponses forcément génériques
Réponses génériques:
- As-tu vérifié les options de calcul sur les deux machines? Un calcul automatique avec des formules de type SOMMEPROD(...) risque de faire ramer les macros...
- Evite de sélectionner les cellules et choisis plutôt de travailler avec des objets typés RANGE. La sélection incessante des cellules ralentit considérablement l'exécution.
- Dans ton code, je ne vois pas de screenupdating... Donc, difficile de te dire si, lors de tes essais, tu l'as utilisé à bon escient.
- ...
Encore une fois, si tu ne donnes pas les vraies infos, nous ne saurons pas vraiment t'aider...
Dsl, hier je n'avais pas le code complet (pas au taf)
voici le code complet en piece jointe
Les options Excel sont parametrées de la meme maniere sur les deux postes.
pour info, le premier met 5 fois plus de temps que le deuxieme.
Bonsoir,
Apparemment, tu fabriques de nouvelles feuilles qui ont toutes le même format. Pourquoi ne pas fabriquer un modèle déjà prêt, avec la mise en forme qui va bien et toutes les formules "génériques" ? Ces modèles seraient des feuilles masquées de ton programme principale.
Cela permettrait sans doute d'accelérer pas mal ton problème.
Il est clair que ton programme n'est pas optimisé. Juste un exemple :
peut être écrit tout simplement :Code:
1
2 Range("A1").Select ActiveCell.FormulaR1C1 = "Critère"
A toi de voir !Code:
1
2
3 [A1] = "Critère" ' ou Range("A1") = "Critère"
Didier