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

Re tous, bonsoir jeanpierre, le forum


Je ne comprends pas, car plusieurs sources disent qu'éviter les Selection
dans le code VBA accélère celui-ci.

Je n'ai fait que modifié en ce sens.

Normalement, cela devrait moins ramer.

Si des gens du forum adeptes des macros VBA pouvaient jeter un coup et me dire si j'ai commis des erreurs de code.

Merci

A
+
 

ledzepfred

XLDnaute Impliqué
Re : Excel qui rame

bonsoir le fil, vbacrumble,

tu as parfaitement appliqué la règle 5 de Dave Hawley mais à mon sens la règle n°1 est également très importante, il faut placer Option Explicit dans tous les modules et déclarer toutes les variables et quand je dis déclarer il faut éviter au maximum les variables de type variant qui bouffent beaucoup de ressource.

Le pb est que toutes les variables définissant des plages multiples qui sont utilisées dans les differentes macros sont forcement à déclarer en variant
pour pallier le problème réinitialiser ces variables en fin de code (exemple tabfeuilles = Nothing) ,ci-joint une correction de fichier, reste à tester le temps d'execution
a+
 

Pièces jointes

  • CorrectionREVERIF.zip
    163.8 KB · Affichages: 44
Dernière édition:

Cazinos

XLDnaute Occasionnel
Re : Excel qui rame

Bonsoir,

Merco pour vos réponses
J'ai testé les macros mais avant j'ai copié sur vos idées pour corriger toutes mes macros
Effectivement avec "option explicit" et les select en moins c'est mieux
Par contre avec la macro ci-dessous est toujours longues ;

Merci

Cazinos

Option Explicit

Sub InsererLigneVideBX()
Sheets("BX").Select
On Error Resume Next
'à cause de la dernière ligne de la colonne A
Dim c As Range
For Each c In Range("A:A")
'écrire TOTAL en majuscule
If UCase(Left(c, 5)) = "TOTAL" And c.Offset(1, 0) <> "" Then
c.Offset(1, 0).EntireRow.Insert
End If
Next
End Sub
 

ROGER2327

XLDnaute Barbatruc
Re : Excel qui rame

Bonsoir à tous
En écrivant
Code:
Sub InsererLigneVideBX()
    Sheets("BX").Select
Dim c As Range
    For Each c In Range([COLOR="Red"][B]"A1:A" & Cells(Rows.Count, 1).End(xlUp).Row[/B][/COLOR])
        If UCase(Left(c, 5)) = "TOTAL" And c.Offset(1, 0) <> "" Then c.Offset(1, 0).EntireRow.Insert
    Next
End Sub
et si la feuille n'a pas 40 000 lignes utiles, on devrait avoir une amélioration.​
Bonne continuation,
ROGER2327
 

vbacrumble

XLDnaute Accro
Re : Excel qui rame

Bonsoir à tous


Cazinos:

A quoi cela sert-il que je modifie tes codes ???? :mad:


Voici la macro modifiée telle qu'elle était dans ma dernière pièce jointe
Code:
Sub InsererLigneVideBX()
Dim c As Range
'On Error Resume Next
'à cause de la dernière ligne de la colonne A
With Sheets("BX")
For Each c In .Range("A1:A" & .[A65536].End(xlUp).Row)
' écrire TOTAL en majuscule
If UCase(Left(c, 5)) = "TOTAL" And c.Offset(1, 0) <> "" Then
c.Offset(1, 0).EntireRow.Insert
End If
Next
End With
c = Nothing
End Sub

Et tu poses une question sur ton ancien code

C'est décourageant !


Merci à ledzep et Roger2327 d'avoir pris le temps de lire mes modifications.

C'est vrai que j'avais oublié Option Explicit

A+
 

CBernardT

XLDnaute Barbatruc
Re : Excel qui rame

Bonsoir à tous,

Si j'ai bien compris ?

Enlever l'affichage, surtout avec des insertions de lignes devrait largement accélérer le processus.

Sub InsererLigneVideBX()
Dim i As Integer
Application.ScreenUpdating = False
With Sheets("BX")
For i = 2 To .Range("A65536").End(xlUp).Row
If UCase(Left(.Cells(i, 1), 5)) = "TOTAL" And .Cells(i + 1, 1) <> "" Then
.Cells(i + 1, 1).EntireRow.Insert
End If
Next
End With
End Sub

Cordialement

Bernard
 

Cazinos

XLDnaute Occasionnel
Re : Excel qui rame

Bonjour et merci pour vos réponses

J'ai testé toutes les versions "Sub InsererLigneVideBX()
que tu as corriger mais ca rame quand même.
J'ai pris le temps de lire toutes les macros puisque j'ai travaillé à partir de tes corrections pour corriger les miennes.
Je vais testé les nouvelles versions ci-dessus aujourd'hui.

merci

Cazinos
 

Cazinos

XLDnaute Occasionnel
Re : Excel qui rame

re,

J'ai testé les macros Sub InsererLigneVideBX() elles fonctionnent toutes même celles qui lance les 4 onglets "bx cf cp sg" j'avais mal copier scuses.
Par contre le fait d'ajouter "option explicit" c'est top

merci pour votre aide

Cazinos
 

Discussions similaires

Réponses
1
Affichages
133

Statistiques des forums

Discussions
312 479
Messages
2 088 744
Membres
103 944
dernier inscrit
Stbj