OVH Cloud OVH Cloud

Remplacer valeur têtu

11 réponses
Avatar
François
Bonjour =E0 tous,

Je suis sur Excel 97 avec des d=E9cimales s=E9par=E9es par une=20
virgule. (ex : 1235,05)
J'ai une macro, ci dessous, qui fonctionne tr=E8s bien pour=20
changer un caract=E8re. Je m'explique :
J' importe un fichier avec des nombres sous la forme :
1.236,56
1.236.256,56
236,26
Lorsque je lance ma macro, qui doit remplacer le "."=20
par "", j'obtiens :
1236,56 =3D>OK
1236256,56 =3D>ok
23626 =3D> KO. 236,23 est la bonne r=E9ponse ! Mais pour=20
excel, non !

Merci pour vos lumi=E8res.

Cordialement,
Fran=E7ois

Macro :
Sub Mise_Forme()
'
Dim Char, Rg As Range

Char =3D Array(".")

'Utilisation d'une variable Rg pour contenir
'toute la plage affect=E9e par le remplacement.
Set Rg =3D Worksheets("Import").Range("F:F")


Rows("1:36").Select
Application.CutCopyMode =3D False
Selection.Delete Shift:=3DxlUp
ActiveWindow.SmallScroll ToRight:=3D1
Columns("M:M").Select
Selection.Delete Shift:=3DxlToLeft
ActiveWindow.SmallScroll ToRight:=3D-1

For Each C In Char
Rg.Replace What:=3DC, Replacement:=3D""
Next
=20
Range("A1").Select
=20
End Sub

1 réponse

1 2
Avatar
docm
Ca ne fonctionne pas. Désolé.

Ceci semble fonctionner:
Dim a$

For Each c In Rg

a = CStr(c.Text)
While InStr(a, ".")
a = Mid(a, 1, InStr(a, ".") - 1) & Mid(a, InStr(a, ".") + 1)
Wend
c.Value = a

Next

Sous toutes réserves.

"docm" wrote in message
news:
Bonjour François.

Le problème semble être dû au format de la cellule.

Ceci fonctionne:

Rg.NumberFormat = "@" 'Format texte
Rg.Replace What:="", Replacement:=""
Rg.NumberFormat = "General"

Amicalement.

"François" wrote in message
news:3b3201c48f99$ac020bc0$
Salut FxM

Cela ne marche pas non plus... Je vais essayer de trouver
une solution de contournement. Ceci dit, je reste à
l'écoute...

Merci encore,

François
-----Message d'origine-----
Bonsoir,

Si tu es en Excel 97 (ce que je crois), remplace
replace
par
application.substitute

@+
FxM



François wrote:
Salut Nicolas B.

Je viens de faire exactement ta manip, et VBA me
renvoie "Sub ou fonction non défini" sur Replace !!

Gloups !

Je reste preneur et merci encore pour le temps que tu
me


consacres

François

-----Message d'origine-----
En modifiant un peu (sélectionne les cellules à traiter


avant d'exécuter

la macro) :

Sub Toto()
For Each c In Selection
c.Value = Replace(c, ".", "")
c.Value = Replace(c, ",", ".")
Next
End Sub


A+
Nicolas B.


François wrote:

Salut Nicolas B.

VBA me renvoie une erreur de compilation...

As tu une idée ???



-----Message d'origine-----
Salut François,

Avec VBA et les nombres décimaux, il faut jongler
entre






les points les


virgules... Essaie ceci :

For Each c In Char
c.Value = Replace(c, ".", "")
c.Value = Replace(c, ",", ".")
Next

Le premier Replace supprime tous les points.
Le deuxième remplace les virgules par des points, car




en

VBA, les


nombres sont au format anglais, donc avec un point




comme

séparateur de


décimales. En affectant cette valeur numérique (avec
un






point) à une


cellule, le format local utilisé (ici, la virgule).


A+
Nicolas B.



.

.













1 2