Résolu Macro supprimer ligne vide

bapt0201

XLDnaute Nouveau
Bonjour le forum,

je cherche une macro pour supprimer les lignes dont les cellules de la colonne J sont vides, cette macro fonctionnait bien sur un fichier d'environ 20 000 lignes. Mais elle ne fonctionne pas sur un fichier plus volumineux.

Voici ma macro :

Sub Supprimer_Lignes_Vides()

Range("J1:J500000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub

Lorsque j’exécute la macro j'ai le message d'erreur suivant :

" Erreur d'éxecution 1004
Impossible de lire la propriété SpécialCells de la classe Range "

Merci d'avance pour vos réponses :)
 

pierrejean

XLDnaute Barbatruc
Bonjour baptt0201

A tester:
Sub Supprimer_Lignes_Vides()
x = Range("J" & Rows.Count).End(xlUp).Row
Range("J1:J" & x).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub
 

Roblochon

XLDnaute Impliqué
Bonjour,

Je viens de tester sur un classeur cela fonctionnait parfaitement.
Peut-être que les cellules ne sont pas vraiment vides et contiennent ""?

Bon fin d'après-midi
 

bapt0201

XLDnaute Nouveau
Bonjour,

Merci pour vos réponses.

Est-ce que cela peut-être lié à un nombre trop important de ligne à supprimer ?
Dans mon cas le fichier contient un peu moins de 500 000 lignes dont au moins 400 000 sont à supprimer.

Quand j'essaie de les supprimer manuellement j'ai le message suivant qui s'affiche et effectivement il me faut attendre plus de 30 minutes avant que les lignes soit supprimées.


1036029

La macro doit mettre le même temps pour s’exécuter je suppose mais je trouve ça anormalement long
 

Crocs64

XLDnaute Nouveau
Bonjour,

J'ai eu le même problème que vous la dernière fois.
Manuellement, en sélectionnant les lignes vides et en les supprimant j'avais le même message.
Pourtant avec un nombre de lignes beaucoup moins important.
Peut-être que cela est lié à la machine que supporte le fichier et non essentiellement au nombre de lignes.

A suivre...
 

bapt0201

XLDnaute Nouveau
Bonjour,

Comment pourrions-nous répondre exactement sans réelle connaissance de votre fichier?

Bons essais
Désolé pour le manque d'informations, je pensais que mes explications étaient suffisantes. Je ne peux pas joindre le fichier pour des raisons de confidentialité. Mais je vous met un extrait en espérant que ça soit utile.

C'est une base de données qui provient de l'ERP avec le détail de toutes les commandes d’où le nombre important de lignes (500 000) et de colonnes (A:AG).

les cellules de la colonne A à Z sont pleines mais à partir de la colonne AA qui correspond au Chiffre d'affaires, un grand nombre de cellules sont vides. C'est pour cela que je souhaite supprimer les lignes dont la cellules en colonne AA sont vides.

Pour obtenir une base de données plus pur j'ai réalisé une macro pour supprimer les colonnes inutiles et les lignes inutiles. Donc les données de la colonne AA se retrouve en colonne J, d’où la macro :

Sub Supprimer_Lignes_Vides()

Range("J1:J500000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub

Le problème étant que cette macro qui marchait parfaitement avec le même types de fichier mais avec un nombre de lignes bien inférieurs (10 000) ne fonctionne plus sur mon fichier actuel.

Je pense suite au message de Crocs64 "que cela est lié à la machine que supporte le fichier et non essentiellement au nombre de lignes. "
 

Fichiers joints

Roblochon

XLDnaute Impliqué
Re,


Dans votre exemple il n'y a même pas votre macro. De plus seule deux lignes sont présentes.
Puisque vous avez excel 2019 peut-être auriez-vous intérêt à utiliser PowerQuery pour traiter la chose.

bonne continuation
 

bapt0201

XLDnaute Nouveau
Oui effectivement je n'y avait pas pensé, je vous remercie pour votre aide.

Du coup je pense avoir trouver une solution il suffit de filtrer les données de la colonne en enlevant les cellules vides et de copier/coller la plage visible dans une autre feuille. Ensuite supprimer l'ancienne, cela prend 1min contre 30min en essayant de supprimer les lignes qui contiennent une cellule vide.

Peut-être que cette solution pourra vous aidez @Crocs64

Bonne fin de journée.
 

Roblochon

XLDnaute Impliqué
Bonjour,

Merci pour le retour où l'on voit que les solutions les plus simples sont souvent les meilleurs.

cordialement
 

Discussions similaires


Haut Bas