Remplacer point par virgule Erreur pour certains nombres

Bonjour,

Je me permets d'ouvrir un nouveau sujet à propos de ce problème car les autres sujets le traitant que j'ai pu parcourir n'ont pas résolu le mien .

Comme écrit dans le titre j'aimerais remplacer les points de mes cellules par des virgules (mais pas pour tout le fichier, juste pour une feuille). Pour replacer vite fait le contexte, je dois copier les données d'une feuille d'un excel dans une autre feuille excel et ensuite changer les points en virgule.

Je débute en VBA (J'ai commencé hier) et j'ai fais ce code (la macro ce trouve dans le excel REPORTING COMPARATIF) afin de copier coller une plage de cellules et changer les points en virgules :

Workbooks.Open ("C:\Users\enzo\Desktop\ExcelVBA\Test\DATA_CDM.xls")
Workbooks("DATA_CDM.xls").Sheets("DATA_CDM").Range("A1:CA1500").Copy _
Workbooks("1_REPORTING_COMPARATIF NOUVEAU.xlsm").Sheets("DATA CDM").Range("B49")
Workbooks("1_REPORTING_COMPARATIF NOUVEAU.xlsm").Sheets("DATA CDM").Range("U:X:Y:Z").Replace What:=".", Replacement:=",",  LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Workbooks("DATA_CDM.xls").Close False

(Ce n'ai que la partie de code qui pose problème).

J'ai mis en pièce jointe le résultat de la macro et le résultat que je souhaite (réalisé avec le raccourcis ctrl + h (qui ne marche pas quand il est translaté en VBA))

J'espère que je suis clair dans mon message et que quelqu'un pourra m'aider

capture resultat voulus

Bonjour,

il vaudrait mieux avoir le contenu de la feuille juste après la copie et avant le "replace" et même plutôt un classeur pour essayer de déterminer l'origine du soucis ( copie en texte...?)

A+

Bonjour,

Merci pour votre réponse, je peux effectivement vous donner le résultat après la copie, je ne peux cependant pas vous partager le classeur car il contient des données sensible. Ou alors je peux vous partager un classeur avec le même type d'erreur (sans la copie des données (qui fonctionne très bien) et juste avec le remplacement des point en virgules qui ne marche pas (même avec des données non copiées et rentré à la main)

Macro utilisé :

Sub test()
    Range("A13:F18").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
       ReplaceFormat:=False
End Sub

Bonjour @ tous,

As-tu essayé avec Données/Convertir ?

2020 02 21 13 52 53

Re,

sur ton fichier, il apparait que les points sont juste un séparateur de milliers, tu n'as qu'à changer le séparateur de milliers et tout ira bien.

2020 02 21 13 56 39

Cordialement

Bonjour,

Non car je souhaite le faire en VBA, le but est d'automatiser tout le processus (copie et changement des points en virgules) afin que le service en charge des données puisse les manipuler directement.

Sinon je leur aurais dit de faire ctrl+h et le tour est joué . De plus j'ai essayé l'enregistrement macro de cette commande mais ça me fait la même erreur. je cherche donc des moyen d'automatiser ce changement uniquement pour une feuille précise et non pour le excel.

Re,

sur ton fichier, il apparait que les points sont juste un séparateur de milliers, tu n'as qu'à changer le séparateur de milliers et tout ira bien.

2020-02-21_13-56-39.png

Cordialement

Sur mon fichier excel je n'ai pas de point comme délimiteur de millier :0

De plus il met impossible de changer le délimiter de millier (quand je veux rentrer un délimiteur rien ne se passe) contrairement au délimiteur de décimal que je peux modifier :/.

EDIT : je peux bien modifier le délimiteur my bad, mais c'est marqué que le délimiteur est un espace et non un point

capture

Re,

donc si les données sources sont les données du tableaux en haut, cela veut dire que la virgule ou le point est un séparateur de décimales.

Voir captures d'écran

2020 02 21 14 14 50

Cordialement

Re,

donc si les données sources sont les données du tableaux en haut, cela veut dire que la virgule ou le point est un séparateur de décimales.

Voir captures d'écran

2020-02-21_14-14-50.png

Cordialement

Oui, excusez moi j'ai oublié de la préciser ! c'est bien le point séparateur décimal (que j'aimerais changer en virgule), mais je ne peux pas le changer dans les options car sinon cela change pour tout le excel, et pas que pour la feuille dont j'en ai besoin. Sachant que je veux automatiser de "processus" je suis obligé de le faire en VBA, ce qui ne marche pas.

Et comme tu peux le constater pour la colonne E la macro marche très bien mais pas pour les autres, c'est, je pense, dû au nombre de chiffre dans la cellule (et donc au délimiteur des milliers (qui est l'espace) et qui doit interférer dans le changement des points en virgules)

Bonjour,

une chose me chiffonne dans le code pourquoi Range("U:X:Y:Z").replace autant prendre de U à Z et faire un select

Workbooks.Open ("C:\Users\enzo\Desktop\ExcelVBA\Test\DATA_CDM.xls")
Workbooks("DATA_CDM.xls").Sheets("DATA_CDM").Range("A1:CA1500").Copy _
Workbooks("1_REPORTING_COMPARATIF NOUVEAU.xlsm").Sheets("DATA CDM").Range("B49")
Workbooks("1_REPORTING_COMPARATIF NOUVEAU.xlsm").Sheets("DATA CDM").Range("U:Z").Select
Selection.Replace What:=".", Replacement:=",",  LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Workbooks("DATA_CDM.xls").Close False

Bonjour,

une chose me chiffonne dans le code pourquoi Range("U:X:Y:Z").replace autant prendre de U à Z et faire un select

Workbooks.Open ("C:\Users\enzo\Desktop\ExcelVBA\Test\DATA_CDM.xls")
Workbooks("DATA_CDM.xls").Sheets("DATA_CDM").Range("A1:CA1500").Copy _
Workbooks("1_REPORTING_COMPARATIF NOUVEAU.xlsm").Sheets("DATA CDM").Range("B49")
Workbooks("1_REPORTING_COMPARATIF NOUVEAU.xlsm").Sheets("DATA CDM").Range("U:Z").Select
Selection.Replace What:=".", Replacement:=",",  LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Workbooks("DATA_CDM.xls").Close False

Bonjour,

Comme j'ai dit je suis débutant en VBA donc effectivement c'est surement pas la meilleur méthode pour sélectionner les colonnes je suppose. Mais de ce que je sais je crois qu'il faut éviter d'utiliser Select car ça rend la macro plus longue au niveau de l'exécution et elle est déjà assez longue de base (la macro d'origine qui copie colle les données). :/

Edit : mon code est modifié, j'ai juste pas mis en place le select mais le problème reste le même avec les virgules

Bonjour,

Une question :

D'où provient ce fichier data_com.xls ?

Ne serait pas à l'origine un fichier txt, csv ou autre ?

Cdlt.

Bonjour,

Une question :

D'où provient ce fichier data_com.xls ?

Ne serait pas à l'origine un fichier txt, csv ou autre ?

Cdlt.

Non je manipule que des fichiers excels, mais ce n'est pas la cause de mon problème. même en faisant la manipulation sur un seul fichier je n'arrive pas a changer les points en virgules.

Rechercher des sujets similaires à "remplacer point virgule erreur certains nombres"