Voici une procédure que j'utilise pour supprimer des lignes de tableau vides. Je travaille parfois avec de grands ensembles de données (pour Excel) et cette méthode est plus rapide. Il charge les lignes de table dans un tableau, vérifie les lignes vides dans le tableau et exécute une opération range.delete
à la fin.
Vous utilisez la procédure comme ceci:
Sub Test()
DeleteBlankTableRows ActiveSheet.ListObjects(1)
End Sub
ActiveSheet.ListObjects (1) est (généralement) la première table de table sur la feuille de calcul active.
est ici la procédure actuelle:
Sub DeleteBlankTableRows(ByVal tbl As ListObject)
Dim rng As Range
Set rng = tbl.DataBodyRange ' Get table data rows range.
Dim DirArray As Variant
DirArray = rng.Value2 ' Save table values to array.
' LOOP THROUGH ARRAY OF TABLE VALUES
Dim rowTMP As Long
Dim colTMP As Long
Dim combinedTMP As String
Dim rangeToDelete As Range
' Loop through rows.
For rowTMP = LBound(DirArray) To UBound(DirArray)
combinedTMP = vbNullString ' Clear temp variable.
' Loop through each cell in the row and get all values combined.
For colTMP = 1 To tbl.DataBodyRange.Columns.Count
combinedTMP = combinedTMP & DirArray(rowTMP, colTMP)
Next colTMP
' Check if row is blank.
If combinedTMP = vbNullString Then
' Row is blank. Add this blank row to the range-to-delete.
If rangeToDelete Is Nothing Then
Set rangeToDelete = tbl.ListRows(rowTMP).Range
Else
Set rangeToDelete = Union(rangeToDelete, tbl.ListRows(rowTMP).Range)
End If
End If
Next rowTMP
' DELETE BLANK TABLE ROWS (if any)
If Not rangeToDelete Is Nothing Then rangeToDelete.Delete
End Sub
Cela a des avantages par rapport aux autres méthodes:
- VITESSE: Dans un essai d'une table avec 200.000 lignes et 8 colonnes, cette méthode a 19 secondes C'est un peu plus de la moitié des 34 secondes que nécessite la méthode
SpecialCells(xlCellTypeBlanks)
pour une table identique.
- IDENTIFIE DES RANGÉES DE TABLE BLANCHES COMPLÈTES: Contrairement à d'autres méthodes (telles que this one qui sont réellement très utiles dans certaines situations), cette méthode recherche des blancs dans chaque cellule d'une ligne au lieu d'une seule.
Merci d'envoyer ce. J'ai couru ce premier tel quel et il a terminé en 4 minutes 13 secondes. Avec la mise à jour de l'écran et les calculs mis en manuel, il a été réduit à 1 minute 17 secondes - plus rapide mais encore plus lent que les 19 secondes obtenues avec la méthode que j'ai posté comme réponse .... semble qu'il devrait y avoir un moyen plus rapide. – ChrisB