Problème suppression de lignes vides

Résolu/Fermé
cruxifer Messages postés 16 Date d'inscription jeudi 16 avril 2015 Statut Membre Dernière intervention 19 mai 2015 - Modifié par cruxifer le 22/04/2015 à 13:55
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 25 avril 2015 à 00:11
Bonjour,

Voici mon problème :
J'ai un tableau généré par macro qui n'est jamais le même.
Ce genre de tableau ressemble à ça :

13-P-B2 14/01/2014 31033 280
13-P-B2 28/02/2014 18419 20
13-P-B2 cellule vide* 12258 40
13-P-B2 25/04/2014 496959 550
  • cellule vide càd il n'y a rien (ce n'est pas une chaine de caractères).


En gros, je veux supprimer toutes lignes où il n'y a pas de dates.
J'ai trouvé pleins de choses sur le net et la "meilleure" qui a retenue mon attention c'est :


Dim newWS as Worksheet
Set newWS = Application.Workbooks.Item(1).Worksheets.Add(After:=Sheets(Sheets.Count))
newWS.Name = "a_importer"

newWS.Range(newWS.Cells(1, 2), newWS.Cells(newWS.UsedRange.Rows.Count, 2)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete


Sauf que si il n'y a aucune ligne sans date, mon programme ne compile pas...
Help.
Merci d'avance !
A voir également:

2 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 25/04/2015 à 00:11
Bonjour,

ta 1ère solution doit être plus rapide.
Sans doute qu'en testant ça doit mieux passer :
Dim plage As Range
Set plage = newWS.Range(newWS.Cells(1, 2), newWS.Cells(newWS.UsedRange.Rows.Count, 2)).SpecialCells(xlCellTypeBlanks)
If Not plage Is Nothing Then plage.EntireRow.Delete

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
1
cruxifer Messages postés 16 Date d'inscription jeudi 16 avril 2015 Statut Membre Dernière intervention 19 mai 2015
22 avril 2015 à 14:03
Trouvé !
For ligne = newWS.UsedRange.Rows.Count To 1 Step -1
If newWS.Cells(ligne, 2) = "" Then newWS.Rows(ligne).Delete
Next ligne
0