re-bonsoir,
une solution basée sur la proposition de Jean-Eric, mais qui selectionne les cellules avant de lancer le .delete, ce qui semble avoir un impact positif sur les performances.
à tester sur des gros volumes.
Sub repna()
Dim bigrange As Range
Set Ws = Worksheets("Feuil1")
With Ws
lngRows = .Range("A" & Rows.Count).End(xlUp).Row
intColumns = .Cells(1, Columns.Count).End(xlToLeft).Column
For r = 2 To lngRows
For c = intColumns To 2 Step -1
If Application.IsNA(.Cells(r, c)) Then If bigrange Is Nothing Then Set bigrange = .Cells(r, c) Else Set bigrange = Application.Union(bigrange, .Cells(r, c))
Next
Next
bigrange.Delete shift:=xlToLeft
End With
End Sub