@Tous
Un grand merci pour votre aide.
Code terminé, avec toutes les réflexions.
Option Explicit
Sub Format_Cliquer()
Dim tbl As Variant, v As Variant
Dim lastCol, lastRow, i, j As Long
Const RW = 2
'On traite la feuille des données annuelles DATA_A
With Worksheets("DATA_A")
lastCol = .Cells(RW, .Columns.Count).End(xlToLeft).Column
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
tbl = .Cells(RW, 1).Resize(lastRow - RW + 1, lastCol).Value
End With
For i = 2 To UBound(tbl)
For j = 2 To UBound(tbl, 2)
If tbl(i, j) <> "" And Len(tbl(i, j)) > 0 And Not IsDate(tbl(i, j)) Then
v = VBA.Replace(tbl(i, j), "(", "-")
v = VBA.Replace(v, ")", "")
v = VBA.Replace(v, ChrW(8239), "")
v = VBA.Replace(v, Chr(160), "")
v = VBA.Replace(v, "%", "")
tbl(i, j) = CDbl(v)
End If
Next j
Next i
Worksheets("DATA_A").Cells(RW, 1).Resize(lastRow - RW + 1, lastCol).Value = tbl
'On traite la feuille des données trimestrielles DATA_T
With Worksheets("DATA_T")
lastCol = .Cells(RW, .Columns.Count).End(xlToLeft).Column
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
tbl = .Cells(RW, 1).Resize(lastRow - RW + 1, lastCol).Value
End With
For i = 2 To UBound(tbl)
For j = 2 To UBound(tbl, 2)
If tbl(i, j) <> "" And Len(tbl(i, j)) > 0 And Not IsDate(tbl(i, j)) Then
v = VBA.Replace(tbl(i, j), "(", "-")
v = VBA.Replace(v, ")", "")
v = VBA.Replace(v, ChrW(8239), "")
v = VBA.Replace(v, Chr(160), "")
v = VBA.Replace(v, "%", "")
tbl(i, j) = CDbl(v)
End If
Next j
Next i
Worksheets("DATA_T").Cells(RW, 1).Resize(lastRow - RW + 1, lastCol).Value = tbl
End Sub
Tout executé en 1sec. Vraiment top.
A+