macro qui rame énormément

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

meldja

XLDnaute Impliqué
Bonjour,
Je viens de lancer une macro censé effacer lignes si la cellule en colonne C est vide.
Voici le code :
Code:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim der As Integer
der = Range("C65536").End(xlUp).Row

For i = der To 2 Step -1
If Range("C" & i) = 0 Then
Rows(i).Delete
End If
Next i
End Sub

Ca rame à un tel point que j'ai dû arrêter l'exécution de cette dernière.
Il faut dire que je l'ai exécuté sur un fichier contenant 2015 lignes et 2 cellules sur 6 sont vides en colonne C (donc 2 lignes sur 6 doivent être supprimées).

Est-ce que c'est uniquement dû à la taille du fichier ou la macro laisse à désirer ?
Pour info, j'ai testé ce code sur une centaine de lignes et ça ne prend que quelques secondes à peine.

Merci d'avance et bonne journée
 
Re : macro qui rame énormément

Bonjour

Essayes de modifier ainsi
Code:
Dim i As Long
Dim der As Long

If Range("C" & i) = "" Then
ou alors
If IsEmpty(Range("C" & i)) Then

Sinon cette macro fera ce que tu souhaites sans ramer
Code:
Columns("C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
 
Dernière édition:
Re : macro qui rame énormément

Salut et merci,
Je viens de tester avec tes conseils mais après 20 minutes, j'ai essayé en vain de stopper la macro (Ctrl + pause). J'étais obligé de lancer le gestionnaire des tâches pour quitter Excel.
Ca vient peut être du fichier : j'ai fait un copier/coller d'un fichier csv sur un fichier xls.
Je vais faire différents tests pour voir d'où ça peut venir.

Encore merci et bonne journée
 
Re : macro qui rame énormément

si la solution précédente ne marche pas, essaie de rajouter cette ligne au début de ta macro (après les déclarations)

Code:
Application.ScreenUpdating = False
 
Re : macro qui rame énormément

Bonjour à tous,

Peut-être une macro Worksheet_Change qui traine dans le coin ?

Auquel cas, dans la macro CommandButton1_Click, neutraliser l'action des évènements avec en début de macro le code :

Code:
Application.ScreenUpdating = False 'bien entendu
Application.EnableEvents = False

et en fin de macro :

Code:
Application.EnableEvents = True

Edit : avec la solution proposée par vbacrumble, la macro Worksheet_Change, si elle existe, n'est de toute façon exécutée qu'une fois.

A+
 
Dernière édition:
Re : macro qui rame énormément

Re



Chez moi cette macro sur 4000 lignes
(une cellule sur deux est vide)
est quasi immédiate, pas chez vous ?

Code:
sub test()
Columns("C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
end sub
 
Dernière édition:
Re : macro qui rame énormément

Bonsoir,
Désolé du retard pour ma réponse ; que de galères internautiennes.
Voici le code que j'ai tenté et qui marche aussi bien que celui d'origine :
Code:
Private Sub CommandButton1_Click()
Dim i As Long
Dim der As Long
der = Range("C65536").End(xlUp).Row

For i = der To 2 Step -1
If IsEmpty(Range("C" & i)) Then
Columns("C").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
Next i
End Sub

Tout le monde à l'air d'être d'avis que ça ne vient pas du code (à moins que j'ai fait une erreur quelque part) alors j'en conclue qu'il y a un pbme dans mon fichier. Je ne peux pas chercher tout de suite parce que je suis chez moi et que je n'ai pas pensé à récupérer une copie du fichier (qui ne m'appartient pas).
En tout cas, encore merci de vos réponses ; et je vous tiens au courant si j'ai trouvé l'origine du plantage.
Juste pour info : quand je teste cette macro avec un fichier test, tout roule. Je me demande si ça ne viendrait pas des formules de calcul SOMMEPROD sur le fichier en question.
Je vais faire un petit test de suite.
Merci beaucoup, bonne soirée.
 
Re : macro qui rame énormément

Re,
Je viens de faire un test avec un fichier où j'ai incrémenter la valeur 1 sur 4000 lignes en colonne B, puis sur la colonne d'à coté (C) j'ai saisi et recopié la formule suivante :
=mod(B2;2)
pour obtenir des 0 et des 1 en colonne C
puis j'ai testé ma macro d'origine :
Code:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim der As Integer
der = Range("B65536").End(xlUp).Row

For i = der To 2 Step -1
If Range("C" & i) = 0 Then
Rows(i).Delete
End If
Next i
End Sub

Et ça marche nickel.
J'en conclue que ça vient du fichier.
Encore merci et bonne soirée
 
Re : macro qui rame énormément

Bonsoir a tous

S'il y a des formules (notamment utilisant LIGNE()), il serait bon de mettre en debut et fin de macro:

Code:
Application.Calculation = xlCalculationManual
....
Application.Calculation = xlCalculationAutomatic
 
Re : macro qui rame énormément

Re



la macro que je propose efface uniquement les cellules vides

(pas celles qui contiennent 0, pour celles-là c'est ton code qu'il faut utiliser ou
celui-ci par exemple
Code:
Sub SupprLignesZeroColonneC()
Columns("C").Item(1).AutoFilter 1, "0"
ActiveSheet.AutoFilter.Range.Offset(1, 0).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
End Sub
 
Dernière édition:
Re : macro qui rame énormément

Re,
vbacrumble :
Dans mon dernier fichier test, les cellules où s'appliquent la condition sont à 1 ou à 0 (avec la fonction MOD(Réf;2)), donc IsEmpty ne convient pas. Avec "= 0", ça marche sans problème.

pierrejean :
Je vais tester demain au boulot ta proposition sur le fichier que je n'ai pas actuellement pour voir si ça change quelque chose.

En tout cas, avec les fichiers tests que je fais actuellement sur Excel, il n'y a aucun problème. C'est donc que ça vient du fichier extrait du fichier.CSV.
Je testerai donc demain au boulot sur le fichier qui pose problème et je vous tiendrai au courant si j'ai trouvé d'où ça vient.
Merci beaucoup à vous et bonne soirée
 
- 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
15
Affichages
823
Réponses
5
Affichages
929
Réponses
7
Affichages
186
Retour