Problème avec la fonction "replace" en vba

wei-ma ousai

XLDnaute Nouveau
Bonjour,
Je travaille sous excel 2003 .
J'ai une colonne de données en format standard, ou le séparateur décimal est un point, et je souhaite le transformer en virgule et en format nombre. Quand je le fais à la main, tout va bien, mais quand j'utilise mon scipt, ça ne marche pas. J'ai essayé plein de choses mais rien ne marche. Mes données sont principalement du type "0.596" mais quelques unes sont "1.256", et la fonction replace du scipt donne alors 1256 et se bloque à cette cellule.
Voici mon script:

Columns("C:C").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.AutoFormat Format:=xlRangeAutoFormatClassic1, Number:=True

De plus, pour les cellules où le remplacement se fait, excel m'indique qu'il s'agit de nombre stocké sous forme de texte.
Quelqu'un peut-il m'aider?
Merci
 

job75

XLDnaute Barbatruc
Re : Problème avec la fonction "replace" en vba

Bonjour, bienvenue sur XLD,

Mettez la colonne C au format désiré et exécuter le code :

Code:
Columns("C").Replace What:=".", Replacement:=".", LookAt:=xlPart

A+
 
Dernière édition:

wei-ma ousai

XLDnaute Nouveau
Re : Problème avec la fonction "replace" en vba

Bonjour, j'ai essayé votre méthode, mais cela ne change pas grand chose: le replace va jusqu'au bout de la colonne, mais une partie des cellules reste en format standard alors que d'autres passent en format nombre, excel afiche toujours l'erreur "nombre stocké sous forme texte" même dans les cellules en format nombre, et les nombres de type 1.xyz sont transformés en 1xyz, comme multipliés par 1000. Voici le code que j'ai utilisé :

Columns("C:C").Select
Selection.AutoFormat Format:=xlRangeAutoFormatClassic1, Number:=True
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart

Je ne comprends vraiment pas ce qui se passe Pouvez-vous m'aider?
Merci
 

job75

XLDnaute Barbatruc
Re : Problème avec la fonction "replace" en vba

Bonjour,

Il faut le répéter combien de fois ?

Mettez la colonne C au format nombre désiré (3 décimales par exemple) et exécutez la macro :

Code:
Sub Macro1()
Columns("C").Replace What:=".", Replacement:=".", LookAt:=xlPart
End Sub

Le point remplace le point ;)

A+
 

job75

XLDnaute Barbatruc
Re : Problème avec la fonction "replace" en vba

Bonjour wei-ma ousai, le forum,

Pour représenter un nombre, VBA utilise toujours le point comme séparateur décimal.

Ensuite si VBA entre ce nombre dans la feuille de calcul, c'est le séparateur décimal défini pour l'ordi qui remplace le point.

A+
 

Discussions similaires

Réponses
1
Affichages
137

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz