Macro copie colle supprime lignes

Monique

Nous a quitté
Repose en paix
Bonjour,

A mon tour de poser une question.
Pour accélérer la vitesse de recalcul d'un fichier,
j'ai essayé de trafiquer 3 macros et de les mettre bout à bout.
Le tout est très très lent et ça tremble !

Macro1
Elle copie A4:J4
Elle colle A4:J4 sur A5:J250
Puis elle fait un copié-collé 'spécial valeur'
(seule, elle ne dure pas 2 secondes)

Macro2
Passage en mode de calcul sur ordre

Macro3
Elle supprime les lignes de la ligne 5 à la ligne 249
qui contiennent un 0 en colonne B
(il faut garder la ligne 250 pour une MEFC)
A elle seule, elle dure entre 2 et 3 minutes,
et c'est là que ça tremble et que ça dure 107 ans..

Macro2 suite
Passage en mode de calcul automatique

Voici un copié-collé de ma compil,
qu'est-ce qui cloche, SVP ?

Sub CopieColleSupprime()
Range('A4:J4').Select
Selection.Copy
Range('A5:A250').Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range('D3').Select
Application.CutCopyMode = False

With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False

Dim x As Integer
For x = 249 To 5 Step -1
If Range('B' & x) = 0 Then Rows(x).Delete
Next

With Application
.Calculation = xlAutomatic
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False
End Sub

Merci de vos réponses et explications.
 

ChTi160

XLDnaute Barbatruc
Salut Monique
bonjour le Forum

pour déjà eviter que celà tremble comme tu dis
il faut mettre en tête de procèdure
Code:
Sub CopieColleSupprime()
Application.ScreenUpdating = False
et en fin
Code:
Application.ScreenUpdating = True
End Sub

je n'ai pas réussi a reproduire ton classeur, y a de la formule dans l'air lol, si tu pouvais mettre ne serait ce que quelques lignes cela pourrait aider à le reproduire et tester
merci d'avance

bonne fin de Journée

Message édité par: Chti160, à: 08/11/2005 16:48
 

Excel_lent

XLDnaute Impliqué
témoignage

Bonjour Monique, Bonjour à tous

J'ai rencontré le même genre de problème que toi.

J'ai constaté que le ralentissement survenait après la mise en place des macros avec 'copier coller'.
Le phénomène s'est aussi produit avec le remplacement de listes déroulantes par des listes de validation (ceci, après tes explications dans post).

As tu remarqué, lors de la sauvegarde de ton projet, si celui ci prenait du poids (beaucoup trop chez moi) ?
J'ai naïvement attribué cela à Excel mais j'aurai certainement une réponse ici.

Cordialement et @+
 

Monique

Nous a quitté
Repose en paix
Re,

Merci, ChTi160,
j'ai essayé, ça n'a pas marché.
En fait, je n'ai pas dû trouver la tête de la procédure (ni la fin)

Dans le fichier joint,
il y a 3 boutons et 3 macros,
1 pour copier-coller, 1 pour supprimer des lignes, 1 qui essaie de regrouper les 2 premières.
Mais il n'y a que la 1ère à fonctionner correctement.

Excel_lent, en faisant un copié collé par macro et une suppression de lignes à la main,
le fichier a perdu 33% de son poids et a gagné de la vitesse.
[file name=CopieColleSuppr.zip size=17261]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CopieColleSuppr.zip[/file]
 

Pièces jointes

  • CopieColleSuppr.zip
    16.9 KB · Affichages: 48

Gael

XLDnaute Barbatruc
Bonjour Monique, Bonjour Chti, Bonjour Excellent,

Avez-vous remarqué qu'un vent de folie souffle sur XLD, Hervé se lance dans les formules et Monique dans le VBA, c'est une véritable révolution :) :)

Plus sérieusement Monique, avec mes faibles connaissances en VBA, j'ai testé ta macro.

En fait tu as laissé A250 au lieu de J250 si j'ai bien compris et en ajoutant les instructions screen updating False puis true selon les indications de chti, ça me semble bien marcher.

Peux-tu revérifier avec ces modifs?

@+

Gael
 

ChTi160

XLDnaute Barbatruc
Re Monique

bonsoir le Fil

en pièce jointe mon interprétation si je n'ai pas compris tu me le dis
j'ai laissé les Trois boutons chacun fonctionne
le premier copie et colle,le second efface,le troisième copie colle et efface

tiens moi au courant Merci
bonne soirée [file name=CopieColleSuppV1r.zip size=19289]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CopieColleSuppV1r.zip[/file]
 

Pièces jointes

  • CopieColleSuppV1r.zip
    18.8 KB · Affichages: 54

Monique

Nous a quitté
Repose en paix
Re,

C'est tout bon,
ça marche et à toute vitesse, en plus.

A la place de Clear, j'ai mis Delete
(la ligne 250 doit remonter juste au-dessous de la dernière ligne contenant des données,
pour que la MEFC trace un trait)
A la place de Cells(249, 10) j'ai mis Cells(249, 256) pour supprimer la ligne entière
A moins que 'ligne entière' s'écrive autrement, mais ça fonctionne bien.

Merci beaucoup.

Gaël, le vent de folie, c'est juste une rafale (pour moi, du moins)
 

Excel_lent

XLDnaute Impliqué
Explications

Bonsoir à tous,

J'avais préparé une légère transformation. Je l'envoie donc même si l'idée a déjà été exploitée.
Pour le tremblement, Excel, en bon tableur, en cas de suppression, vérifie toutes les cellules pour modifier le cas échéant les liaisons. Quand les formules sont complexes, il prend son temps. On voit donc les traces du parcours du curseur.
Ce qui paraît bizarre, c'est que la lenteur s'accroît avec le nombre d'appels aux macros.

cordialement
et @+
[file name=CopieColleSuppr2.zip size=18344]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/CopieColleSuppr2.zip[/file]
 

Pièces jointes

  • CopieColleSuppr2.zip
    17.9 KB · Affichages: 48

Charly2

Nous a quittés en 2006
Repose en paix
Re:Explications

Bonsoir Monique, Jean-Marie, Excel_lent, Gael,

J'avoue que je ne comprends plus très bien. Chez moi, les macros fonctionnent bizarrement, mais ce qui me surprend le plus, Monique, c'est que tu disais vouloir faire un test sur la colonne B alors que Jean-Marie en fait un sur la colonne A...

J'aimerais bien comprendre pourquoi cela fonctionne, ChTi160. C'est juste pour ma formation ;)

Amitiés à toutes et tous
Charly2
 

ChTi160

XLDnaute Barbatruc
Re:Explications

Salut Charly2
je n'ai pas la prétention de faire ta formation Lol

pour ce qui est du test de Monique sur la Colonne B et la mienne sur la Colonne A

eh bien cela est affaire de goût lol
Monique recherchait en partant du bas,les cellules ayant 0 pour valeur pour en supprimer la ligne
eh bien moi je me suis dit,le collage fait,je vais partir du haut de la colonne A et rechercher la première cellule = 0 et en récupérer le Numero de ligne pour déterminer la premiere cellule de ma plage a éliminer
ex Range(Cells(X,1),Cells(249,256)).entireRow.Delete
c'est comme un casse tête y faut trouvé le moyen de moyenner lol
tout est affaire de logique,de combine Lol

bonne fin de Soirée
 

Brigitte

XLDnaute Barbatruc
Re : Re:Explications

Bonjour,

En ce dernier jour de l'année 2014, l'envie me prend de ressortir ce fil où Monique s'essayait aux macros et dans lequel on voit plein d'absents (dont le regretté charly2) et d'autres qu'on croise peu : Gaël, Excel lent...

Meilleurs souvenirs à ces deux là et une pensée forte pour nos xldiens du ciel, je suis sûre qu'ils excellent tout là haut... Bisous ma Monique, tu me manques !
 

Discussions similaires

Réponses
17
Affichages
2 K

Statistiques des forums

Discussions
312 299
Messages
2 086 993
Membres
103 422
dernier inscrit
victus5