Re,
Pas facile de trouver ce qu'il te faut. J'ai effectué pas mal d'essais sans vraiment trouver de solution car dès qu'il y a beaucoup de données, cela devient long.
Faut dire aussi que 40000 données c'est quand même beaucoup.
Par rapport à cela je pense que l'on pourrait accélérer en connaissant la dimension de ton tableau.
Il faudrait donc que la macro prenne cela en considération plutôt que de définir les variables nb_ligne et nb_col car, par cette définition, tu demandes à la macro de parcourir des cellules qui sont peut être vides et là on perd du temps.
Il faut donc savoir lorsque tu parles de 4000 lignes si pour chaque colonne tu as des données jusqu'à la ligne 4000 ou non. (exemple : B2:B4000 mais C2:C500)
Idem dans l'autre sens, si ta dernière colonne est la colonne Z, est-ce que pour toutes les lignes tu as des données encodées jusque Z.
Sinon tu peux aussi essayer cette macro :
Sub test()
Dim max As Integer, nb_ligne As Integer, I As Integer
Dim nb_col As Byte
Application.ScreenUpdating = False
max = 450
nb_ligne = 400
nb_col = 10
With Sheets("Feuil1")
While nb_col <> 1
For I = .Range("a" & nb_ligne).End(xlToLeft).Row To 1 Step -1
If .Cells(I, nb_col) <= max Then .Cells(I, nb_col).Delete Shift:=xlToLeft
Next I
nb_col = nb_col - 1
Wend
End With
End Sub
A te lire
Dan