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

10 réponses

1 2
Avatar
Nicolas B.
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.


François wrote:
Bonjour à tous,

Je suis sur Excel 97 avec des décimales séparées par une
virgule. (ex : 1235,05)
J'ai une macro, ci dessous, qui fonctionne très bien pour
changer un caractère. 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 "."
par "", j'obtiens :
1236,56 =>OK
1236256,56 =>ok
23626 => KO. 236,23 est la bonne réponse ! Mais pour
excel, non !

Merci pour vos lumières.

Cordialement,
François

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

Char = Array(".")

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


Rows("1:36").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveWindow.SmallScroll ToRight:=1
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
ActiveWindow.SmallScroll ToRight:=-1

For Each C In Char
Rg.Replace What:=C, Replacement:=""
Next

Range("A1").Select

End Sub




Avatar
François
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.


François wrote:
Bonjour à tous,

Je suis sur Excel 97 avec des décimales séparées par
une


virgule. (ex : 1235,05)
J'ai une macro, ci dessous, qui fonctionne très bien
pour


changer un caractère. 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 "."
par "", j'obtiens :
1236,56 =>OK
1236256,56 =>ok
23626 => KO. 236,23 est la bonne réponse ! Mais pour
excel, non !

Merci pour vos lumières.

Cordialement,
François

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

Char = Array(".")

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


Rows("1:36").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveWindow.SmallScroll ToRight:=1
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
ActiveWindow.SmallScroll ToRight:=-1

For Each C In Char
Rg.Replace What:=C, Replacement:=""
Next

Range("A1").Select

End Sub


.





Avatar
Nicolas B.
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.




Avatar
François
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.
.







Avatar
FxM
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.



.







Avatar
François
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.



.

.









Avatar
docm
Correction.
C'est pour VBA que le séparateur décimal est toujours le point. Pas pour
Excel.

Ainsi la macro suivante supprimera le séparateur décimal des nombres même si
ce n'est pas le point qui a été choisi comme séparateur décimal.

Sub Macro1()

Cells.Select
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
End Sub

"docm" wrote in message
news:#
Pour Excel, le séparateur décimal est le point.
On peut choisir de modifier le format d'affichage en affichant une virgule
à

la place du point. Mais si on utilise la fonction Replace pour remplacer
le

point, on verra la virgule utilisée comme séparateur décimal, remplacée
comme si c'était un point.

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.



.

.

















Avatar
Fred. P
Et peut être: Range(plage de nombre).NumberFormat = "#,##0.00"

"François" a écrit dans le message de
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.



.

.









Avatar
docm
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.



.

.









Avatar
docm
Pour Excel, le séparateur décimal est le point.
On peut choisir de modifier le format d'affichage en affichant une virgule à
la place du point. Mais si on utilise la fonction Replace pour remplacer le
point, on verra la virgule utilisée comme séparateur décimal, remplacée
comme si c'était un point.

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