Import via VBA cvs->xls remplacement. "." par ","

Bonjour,

Contexte

Dans mon travail je récupère des données csv d'un automate que je modifie sous excel pour faire des courbes.

la modification et la création des graphes étant longues et répétitive, j'ai voulu l'automatiser sous VBA.

J'ai donc automatiser l'import de données , la conversion texte/colonnes et la création d'une userforme pour choisir quelle donnée mettre dans le graphe.

Cependant, je reste bloquer sur un point qui me paraissait TRÈS simple et donc ça m'enrage de ne pas réussir pour finaliser mes fichiers:

Problèmes

les données chiffrées de mon fichier CSV sont des décimales mais le séparateur partie Réel/décimal est un point (".")

Or pour faire mes graphes, j'ai besoin de le remplacer par une virgules (",")

Malheureusement je n'arrive pas a remplacer les "." par des "," en utilisant une macro:

Cela me supprime simplement le " ."

voici un exemple

données sources non utilisables pour des graphes

-1520.000000 0 1 0 1 0 0.060737 -199.990005 70.000000 1.060000 10.000000 0.000028

données modifiées manuellement (avec ctrl+H) (utilisable pour des graphes)

-1520 0 1 0 1 0 0,060737 -199,990005 70 1,06 10 0,000028

données modifiées avec macro

-1 515 000 000 0 1 0 1 0 0,060753 -199 990 005 70 000 000 1 070 000 10 000 000 0,000027

Pour obtenir la macro j'ai utilisé un enregistrement de la manip manuelle dont voici le code

    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=True, _
        ReplaceFormat:=False

J'ai essayer d'imposer le format de la sélection mais cela me donne le même résultat.

Quelqu'un aurait-il une solution a me proposer?

Merci de votre aide.

Ps: je ne pense pas que ce sujet ai été traité dans un autre post, du moins mes recherches non rien données.

si c’était le cs veuillez m'excuser et me donner le lien du post.

Bonsoir,

Peux-tu exprimer tes valeurs en colonne, c'est difficilement lisible sur écran ?

Cdlt.

Voici les données de l'exemple sous forme de colonnes pour plus de lisibilité

données sources non utilisables pour des graphes

-1520.000000

0

10

10

0.060737

-199.990005

70.000000

1.060000

10.000000

0.000028

données modifiées manuellement (avec ctrl+H) (utilisable pour des graphes)

-1520

0

10

10

0,060737

-199,990005

70

1,06

10

0,000028

données modifiées avec macro

-1 520 000 000

0

10

10

0,060737

-199 990 005

70 000 000

1 060 000

10 000 000

0,000028

Bonjour,

Si tu pouvais joindre un fichier cela serai plus facile pour le forum.

Petite piste, il existe la fonction Replace en VBA qui te permet de remplacer un/des caractères par d'autre..

Essaie cette petite macro:

Sub remplacement()

montext = "-1520.000000 0 1 0 1 0 0.060737 -199.990005 70.000000 1.060000 10.000000 0.000028"

modif = Replace(montext, ".", ",")

MsgBox modif

End Sub

Voici un fichier d'exemple.

La macro :

"creation" lance l'ensemble

"conversion" convertit le texte en colonne

"mise en forme" met les titres des colonnes pour le graphe et remplace les "." par des "," => qui marche mal

remplissage remplit mes textbox de ma userform.

j'ai tester ta macro qui marche en l’état dans la msgbox.

mais en la modifiant pour m'en servir

Sub remplacement()
montext = Cells(33, 8)
Cells(33, 8) = Replace(montext, ".", ",")
'MsgBox modif
End Sub

cela fait pareil qu'avant

a noter que j'utilisait deja la fonction replace cf mon code précédent

Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
            :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
33courbev2.xlsm (107.71 Ko)

Bonsoir,

Adaptes ton code avec ceci pour récupérer des valeurs décimales lors de la conversion des données.

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

Cordialement

Macro pour remplacement des . par des ,.

Tester sur ton fichier--> ok

Sub remplacement()

Dim text As String

Dim textmodifie As String

Dim i As Integer

Application.ScreenUpdating = False

nbligne = Application.CountA(Range("A:A"))

For i = 32 To nbligne

text = Range("A" & i).Value

textmodifie = Replace(text, ".", ",")

Range("A" & i).Value = textmodifie

Next

Application.ScreenUpdating = True

End Sub

merci a vous pour votre aide,

La solutions de Jean-Eric fonctionnent très bien.

Patrick, merci pour ta réponse mais la solution de jean-eric marchant, je ne l'ai pas tester.

Je vous remercie du temps accordé

Rechercher des sujets similaires à "import via vba cvs xls remplacement"