J'ai une grande feuille dont je dois effacer tout le contenu. Lorsque j'essaie simplement de l'effacer sans VBA, il passe en mode ne répondant pas. Lorsque vous utilisez une macro telle que:
Sub ClearContents ()
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").Cells.ClearContents
Application.ScreenUpdating = True
End Sub
Il ne répond pas non plus. Quel est le moyen le plus rapide de faire cela?
La plage .Cells n'est pas limitée à celles qui sont utilisées. Par conséquent, votre code efface le contenu de 1 048 576 lignes et de 16 384 colonnes, soit 17 179 869 184 cellules au total. Cela va prendre un moment. Il suffit d'effacer le UsedRange à la place:
Sheets("Zeros").UsedRange.ClearContents
Vous pouvez également supprimer la feuille et l'ajouter de nouveau:
Application.DisplayAlerts = False
Sheets("Zeros").Delete
Application.DisplayAlerts = True
Dim sheet As Worksheet
Set sheet = Sheets.Add
sheet.Name = "Zeros"
Techniquement, et d'après la solution de contournement acceptée par Comintern, je pense que vous souhaitez réellement supprimer toutes les cellules de la feuille. Ce qui supprime le formatage (voir note de bas de page pour les exceptions), etc. ainsi que le contenu des cellules. C'est à dire. Sheets("Zeroes").Cells.Delete
Combiné également à UsedRange, ScreenUpdating et Calculation ignoré devrait être presque intantané:
Sub DeleteCells ()
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").UsedRange.Delete
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub
Ou si vous préférez respecter l'état de calcul, Excel est actuellement dans:
Sub DeleteCells ()
Dim SaveCalcState
SaveCalcState = Application.Calculation
Application.Calculation = XlManual
Application.ScreenUpdating = False
Sheets("Zeroes").UsedRange.Delete
Application.ScreenUpdating = True
Application.Calculation = SaveCalcState
End Sub
Note de bas de page: Si le formatage a été appliqué à colonne entière, il n'est pas supprimé. Cela inclut la couleur de la police, la couleur de remplissage et les bordures, la catégorie de format (comme Général, Date, Texte, etc.) et peut-être aussi d'autres propriétés, mais
Formatage conditionnel IS supprimé, tel quel format complet formatage.
(La colonne entière le formatage est très utile si vous importez plusieurs fois des données brutes dans une feuille, car elles seront conformes aux formats utilisés à l'origine si une importation simple de type coller uniquement (valeurs collées) est effectuée.)
Vous pouvez utiliser la méthode .Clear:
Sheets("Zeros").UsedRange.Clear
En utilisant cela, vous pouvez supprimer le conten et le mise en forme d'une cellule ou d'une plage sans affecter le reste de la feuille de calcul.
Essaye celui-là:
Sub clear_sht
Dim sht As Worksheet
Set sht = Worksheets(GENERATOR_SHT_NAME)
col_cnt = sht.UsedRange.Columns.count
If col_cnt = 0 Then
col_cnt = 1
End If
sht.Range(sht.Cells(1, 1), sht.Cells(sht.UsedRange.Rows.count, col_cnt)).Clear
End Sub