Remplacer points par virgules

Bonjour,

Dans un code VBA, je souhaite remplacer tous les points d'une colonne par des virgules. L'ajout du code suivant permet de faire cela, mais uniquement sur des nombres "classiques", du style 1.2, 3.5E-1, etc...

.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), DecimalSeparator:=".", ThousandsSeparator:=",", _
        TrailingMinusNumbers:=True

Seulement, j'ai parfois des données de la forme: <3.5e-1, et là, rien à faire, le point n'est pas converti... Comment faire ?

Merci d'avance.

Bonjour m@tix,

Essaie ce code plutôt :

Application.ScreenUpdating = False
For Each cel In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
    cel.Value = Replace(cel.Value, ".", ",")
Next cel

Bonjour vba-new !

Je viens d'essayer ton code, ça n'a l'air de rien faire du tout...

Et comme ça ?

Application.ScreenUpdating = False
For Each cel In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
    cel.FormulaLocal = Replace(cel.FormulaLocal, ".", ",")
Next cel

ou comme ça ?

Application.ScreenUpdating = False
Range("A:A").NumberFormat = "@"
For Each cel In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
    cel.Value = Replace(cel.Value, ".", ",")
Next cel

Sinon envoie voir un bout de ton fichier ?

Bonsoir,

Essaie ainsi :

Sub Macro1()
Columns(1).Replace What:=".", Replacement:=Application.DecimalSeparator
Columns(1).TextToColumns Destination:=Range("A1"), DecimalSeparator:=Application.DecimalSeparator
End Sub

Bonne soirée

vba-new, je viens d'essayer, ça ne fonctionne pas non plus... Pareil cousinhub... Voici à quoi ressemble mon code (après avoir pris le soin d'ouvrir le fichier où je vais chercher la donnée bien-sûr):

Set rech = Selection.Find(What:="champ", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False)
 If Not rech Is Nothing Then

  'gestion des points (à remplacer par des virgules)
With Workbooks(fictxt).Worksheets(feutxt)

Columns(8).Replace What:=".", Replacement:=Application.DecimalSeparator
Columns(8).TextToColumns Destination:=Range("H1"), DecimalSeparator:=Application.DecimalSeparator

End With

Sheets(CStr(xxx).Cells(yyy, rech.Column).Value = Function("test")
 End If

Et là, je me retrouve avec 2.0e-1 et non 2,0e-1 par exemple...

Re-,

Ok, je sais que tu veux remplacer les points (.), mais justement, il n'en manquerait pas, devant "Columns(8)" sur les deux lignes (vu que tu fais référence à une autre feuille d'un autre classeur.......)

Peut-être....

-- Mer Juil 13, 2011 1:07 am --

re-,

ainsi que devant "Range("H1"), bien sûr....

 ...
      'gestion des points (à remplacer par des virgules)
    With Workbooks(fictxt).Worksheets(feutxt)

   .Columns(8).Replace What:=".", Replacement:=Application.DecimalSeparator
   .Columns(8).TextToColumns Destination:=.Range("H1"), DecimalSeparator:=Application.DecimalSeparator

    End With
...
  

En effet, ça fonctionne à présent !! Merci beaucoup. Par contre, peux-tu m'expliquer à quoi correspondent ces points que tu m'as fait rajouter dans le code ? D'un point de vue "syntaxe"..

Je me permets d'enchaîner avec une dernière question: à présent, j'obtiens bien des données de la forme <2,4e-1 (par exemple), mais à cause du signe "<", c'est considéré comme une chaîne de caractère et non un nombre (placé sur la gauche dans la cellule). Ai-je tout de même la possibilité d'obtenir <0,24 en allant récupérer <2.4e-1 ?

Rechercher des sujets similaires à "remplacer points virgules"