Nous avons une feuille que nous utilisons pour analyser un processus d'appel d'offres détaillé, et que nous voulons supprimer toutes les lignes vides.Excel VBA Autofilter> Supprimer les lignes vides
La plage peut varier d'un projet à l'autre, jusqu'à 170 colonnes et 6000 lignes.
Le code que j'ai testé fonctionne, sur un projet avec env. 40 colonnes & 4750 lignes, et prend juste 10 minutes pour courir.
Vous cherchez des solutions légèrement plus élégantes pour réduire ce temps. Actuellement, le code va automatiquement filtrer chaque colonne pour les blancs, se demandant si même les colonnes vides filtrées ralentissent le tout.
Dans le code ci-dessous j'ai supprimé la plupart des champs de filtre automatique pour faciliter la visualisation, mais il filtre tous les champs de 1-175.
Sub DeleteEmptyRows()
With Sheets("Detailed Comparison")
Application.DisplayAlerts = False
.AutoFilterMode = False
Application.ScreenUpdating = False
With .Range("F24:FY6000")
.AutoFilter
.AutoFilter Field:=1, Criteria1:="="
.AutoFilter Field:=2, Criteria1:="="
.AutoFilter Field:=175, Criteria1:="="
End With
With .Range("F25:FY6000").SpecialCells(xlCellTypeVisible).Rows.Delete
End With
Application.DisplayAlerts = True
.AutoFilterMode = False
Application.ScreenUpdating = True
End With
End Sub
Je comprends que vous avez besoin comme optimiser votre code ou quelque chose comme ça; Je pense que vous devriez essayer [CodeReview] (https://codereview.stackexchange.com/) || Je ne comprends pas pourquoi vous utilisez un bloc With vide ('.Range (" F25: FY6000 "). SpecialCells (xlCellTypeVisible) .Rows.Delete') – NatNgs