Bon, jai pondu ceci :
Option Explicit
Sub Bouton2_Cliquer()
'Déclarations
Dim DerLig, i, j As Integer
Dim deb As Double, s As String
Dim tableau() As String
Dim indexCol()
'Initialisation
Application.ScreenUpdating = False
indexCol = Array("B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", _
"AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ")
DerLig = Sheets("DATA").Cells(Rows.Count, 1).End(xlUp).Row
ReDim tableau(DerLig - 2, UBound(indexCol))
deb = Timer
Sheets("DATA").Range("B4:AQ500").Replace "(", "-"
Sheets("DATA").Range("B4:AQ500").Replace ")", ""
'Enregistrement des valeurs dans le tableau
For i = 0 To UBound(tableau)
For j = 0 To UBound(indexCol)
tableau(i, j) = Sheets("DATA").Range(indexCol(j) & i + 4)
s = tableau(i, j)
If s <> "" Then Sheets("DATA").Range(indexCol(j) & i + 4) = Traitechaine(s)
Next
Next
MsgBox "Job done in " & Timer - deb & "sec"
End Sub
Function Traitechaine(s As String) As String
Dim t As String
Dim i As Integer
t = ""
For i = 1 To Len(s)
If Asc(Mid(s, i, 1)) <> 160 Then t = t & Mid(s, i, 1)
Next
If t <> "" Then Traitechaine = t
End Function
Qui marche très bien. Moins de 1 minutes pour traiter 1 fichier avec près de 1000 cellules non vides.
Si vous avez des optimisations, n'hésitez pas
@Jean-Eric: le xls échantillon est dans le premier message. Je ne sais pas si c'est ta question