Sub FormaCompta() 'Mise au format colonne "D" "Feuil2" (Prix Unitaire (€))
Dim i%, Y$, NbC%, M%, J%
Dim Text$, Num As Double, Num1 As Double
Dim Devise$, Form$
Devise = "€"
'Devise="xfp"
'----------- Format devise -----------
If Devise = "xfp" Then
Form = "###,##0[$ " & Devise & "-1]"
Else
Form = "###,##0.00[$ " & Devise & "-1]"
End If
'-------------------------------------
Application.ScreenUpdating = False
Sheets("Feuil2").Select
Range("D2").Value = "Prix Unit. (" & Devise & ")"
M = Sheets("Feuil2").Range("D65536").End(xlUp).Row
'------------ Traitement -----------
For i = 3 To M + 10
Y = Range("D" & i).Value
With Range("D" & i).Font
.Name = "arial narrow"
End With
If Y <> "" Then
NbC = Len(Y)
For J = 1 To NbC
Text = Mid(Y, J, 1)
'------------ Mise au format sans "." ni "," -------------
If Text <> Chr(44) Or Text <> Chr(46) And Text = "" Then
Num1 = Range("D" & i).Value
Range("D" & i).Select
Range("D" & i).NumberFormat = Form
Range("D" & i).Value = Num1
End If
'------------ Mise au format si "," (virgule) -------------
If Text = Chr(44) Then
Num1 = Range("D" & i).Value
Range("D" & i).Select
Range("D" & i).NumberFormat = Form
Range("D" & i).Value = Num1
End If
'--- Mise au format si "." (point) transformé en virgule ---
If Text = Chr(46) Then
Num = Replace(Range("D" & i).Value, ".", ",")
Range("D" & i).Select
Range("D" & i).NumberFormat = Form
Range("D" & i).Value = Num
End If
Next
End If
Next
Application.ScreenUpdating = True
End Sub