Remplacement séparateur décimal virgule par point

Bonjour à toutes et à tous,

J'ai cherché, mais je n'ai trouvé aucune solution à mon souci.

Pour ensuite, pourvoir importer la feuille dans SAP, je dois convertir le séparateur décimal "virgule" par le "point"

J'ai donc essayé avec l'enregistreur de macro qui me donne le code de ce fichier

Sub Test()
  With ActiveSheet
    .Columns("F:F").Replace What:=",", Replacement:=".", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
  End With
  MsgBox "Cela devrait être fait... mais non !", vbInformation, "OUPS..."
End Sub

Mais à mon grand regret, cela ne fonctionne pas

Qui peut me dire pourquoi et surtout corriger mon code

Nota : je veux utiliser cette méthode car j'ai souvent un très grand nombre de lignes

@+

Bonjour

Regarde si cela te convient (si cela te va passe le sujet en résolu) Cordialement

Bonjour Joco7915

Heuuuu rien n'a changé à part la sélection de la colonne et la tentative de remplacement ensuite.

Mais sur O365, ton fichier ne fonctionne pas

La solution que j'ai trouvée pour le moment est

  Dim SepApp As String, SepDec As String, Rep As String
  ' Séparateur décimal du poste
  SepApp = Application.International(xlDecimalSeparator)
  ' Poser la question pour le séparateur de décimal
  SepDec = Range("Params_SepDec").Value
  Rep = InputBox("Quel est votre séparateur décimal sur SAP ?" & vbCr _
               & "(le point par défaut)", "SEPARATEUR DECIMAL", SepDec)
  ' Si la réponse n'est pas vide
  If Rep <> "" Then SepDec = Rep
  ' Colonne F = Prix net
  TabCol = .Range("F3:F" & nLig).Value
  For Ind = 1 To UBound(TabCol)
    TabCol(Ind, 1) = Replace(TabCol(Ind, 1), SepApp, SepDec)
  Next Ind
  .Range("F3:F" & nLig).Value = TabCol

Mais je en sais pas si cela sera ok avec un grand nombres de lignes

De plus il est étonnant que l'enregistreur de macro donne un code qui ne fonctionne pas par la suite

A+

bonjour,

vous pouvez changer le séparateur en point, sauvegarder comme CSV (je suppose) et puis réinstaller la virgule avec

  Application.DecimalSeparator = ","
et
  Application.DecimalSeparator = ".

Bonjour BsAlv,

Merci mais ce n'est pas ce que je souhaite

Bonne journée,

bonjour, alors comme ça ?

Sub Test()
     Dim c
     Set c = Range("F3:F" & Range("F" & Rows.Count).End(xlUp).Row)     'votre plage
     With c.Offset(, 27 - c.Column)     'utiliser la colonne AA (=colonne 27) comme plage auxiliaire
          .FormulaR1C1 = "=SUBSTITUTE(""'""&RC6,"","",""."")"     ''ajouter un "'" en face pour transformer le valeur en string et remplacer , par .
          c.Value = .Value     'coller le resultat sur l'origine
          .ClearContents     'effacer plage auxiliaire
     End With
End Sub

En vitesse et avec beaucoup de lignes, je crois que cette macro est presque immédiate, la votre un petit peu plus lent mais aussi presque immédiate

Bonjour BsAlv et merci

Désolé pour le délai de réponse,
je suis beaucoup en déplacement en ce moment et pas beaucoup de temps à consacrer au projet

L'idée est bonne effectivement, mais je vais garder mon code, cela m'évite de créer une nouvelle colonne.

Je clôture le sujet

Rechercher des sujets similaires à "remplacement separateur decimal virgule point"