OVH Cloud OVH Cloud

Edition Remplacer fonctionne lors de l'enregistrement de la macro

17 réponses
Avatar
PLG
Bonjour à tous
Cela fait longtemps que cela me court...
J'ai des données exportées d'une application, elles sont en format texte et
avec un point comme séparateur au lieu d'une virgule.
Je fais donc un Edition / Remplacer les points par les virgules en macro.
Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien, les
données passent en mode numérique et le séparateur est bien la virgule.
Hors si je lance cette macro par la suite, le point est bien remplacé par la
virgule, mais les valeurs restent en format texte et sont donc inexploitables
en l'état.
C'est frustrant...!!!!
Voici mon bête code :
Sub Macro2()
Range("P23:S35").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub

Le problème a déjà dû être soulevé....
Merci à vous si vous arrivez à me dépanner.
Bonne journée
Pat

7 réponses

1 2
Avatar
PLG
Bah.... ben je préfère ta réponse précédente... (O:}
Elle fonctionne à merveille !
Je la garde !

( Pour te faire plaisir ) donne une erreur sur certaines cellules...
du style : 2.980769 me renvoie 2 980 769 au lieu de 2,980 769
J'avoue que c'est assez déconcertant...!
Chose que ne me fait pas ton code précédent.

Toujours est il..... UN GRAND MERCI à toi.
Pat

"michdenis" wrote:

Bonjour,

Une façon de faire...
(pour me faire plaisir...!)

Adapte le nom de la feuille et de la plage
'---------------------------------
Sub test()
Dim C As Range
Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Activate
With .Range("A1:A10")
.Replace ".", ",", xlPart
For Each C In .Cells
C.Select
SendKeys "{F2}" & "~"
t = Timer + 1 / 10000
Do While Timer <= t
DoEvents
Loop
Next
End With
End With
Application.ScreenUpdating = True
End Sub
'---------------------------------




"PLG" a écrit dans le message de groupe de discussion :

Bonjour à tous
Cela fait longtemps que cela me court...
J'ai des données exportées d'une application, elles sont en format texte et
avec un point comme séparateur au lieu d'une virgule.
Je fais donc un Edition / Remplacer les points par les virgules en macro.
Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien, les
données passent en mode numérique et le séparateur est bien la virgule.
Hors si je lance cette macro par la suite, le point est bien remplacé par la
virgule, mais les valeurs restent en format texte et sont donc inexploitables
en l'état.
C'est frustrant...!!!!
Voici mon bête code :
Sub Macro2()
Range("P23:S35").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
End Sub

Le problème a déjà dû être soulevé....
Merci à vous si vous arrivez à me dépanner.
Bonne journée
Pat

Avatar
PLG
Merci à vous tous !!
Je retiens la 2nde solution de Michdenis.
Boone continuation à vous
Bonne journée
Pat

"PLG" wrote:

Bonjour à tous
Cela fait longtemps que cela me court...
J'ai des données exportées d'une application, elles sont en format texte et
avec un point comme séparateur au lieu d'une virgule.
Je fais donc un Edition / Remplacer les points par les virgules en macro.
Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien, les
données passent en mode numérique et le séparateur est bien la virgule.
Hors si je lance cette macro par la suite, le point est bien remplacé par la
virgule, mais les valeurs restent en format texte et sont donc inexploitables
en l'état.
C'est frustrant...!!!!
Voici mon bête code :
Sub Macro2()
Range("P23:S35").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
End Sub

Le problème a déjà dû être soulevé....
Merci à vous si vous arrivez à me dépanner.
Bonne journée
Pat
Avatar
michdenis
Il aurait été sage de stipuler dans ta question que le "point"
était le réparateur de "milliers" et non un séparateur décimal!



"PLG" a écrit dans le message de groupe de discussion :

Bah.... ben je préfère ta réponse précédente... (O:}
Elle fonctionne à merveille !
Je la garde !

( Pour te faire plaisir ) donne une erreur sur certaines cellules...
du style : 2.980769 me renvoie 2 980 769 au lieu de 2,980 769
J'avoue que c'est assez déconcertant...!
Chose que ne me fait pas ton code précédent.

Toujours est il..... UN GRAND MERCI à toi.
Pat

"michdenis" wrote:

Bonjour,

Une façon de faire...
(pour me faire plaisir...!)

Adapte le nom de la feuille et de la plage
'---------------------------------
Sub test()
Dim C As Range
Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Activate
With .Range("A1:A10")
.Replace ".", ",", xlPart
For Each C In .Cells
C.Select
SendKeys "{F2}" & "~"
t = Timer + 1 / 10000
Do While Timer <= t
DoEvents
Loop
Next
End With
End With
Application.ScreenUpdating = True
End Sub
'---------------------------------




"PLG" a écrit dans le message de groupe de discussion :

Bonjour à tous
Cela fait longtemps que cela me court...
J'ai des données exportées d'une application, elles sont en format texte et
avec un point comme séparateur au lieu d'une virgule.
Je fais donc un Edition / Remplacer les points par les virgules en macro.
Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien, les
données passent en mode numérique et le séparateur est bien la virgule.
Hors si je lance cette macro par la suite, le point est bien remplacé par la
virgule, mais les valeurs restent en format texte et sont donc inexploitables
en l'état.
C'est frustrant...!!!!
Voici mon bête code :
Sub Macro2()
Range("P23:S35").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
End Sub

Le problème a déjà dû être soulevé....
Merci à vous si vous arrivez à me dépanner.
Bonne journée
Pat

Avatar
FFO
Rebonjour à toi
Me voilà rassuré !!!!
Effectivement ta solution est nette simple et sans bavure

Chapeau bas !!!!
Avatar
Mishell
Si le séparateur décimal original (à modifier) est le point, il faut le
conserver avant de faire la multiplication par 1.
Car VBA ne reconnaît que le point comme séparateur décimal.
Donc il faut supprimer la commande .Range("A1:A10").Replace ".", ",", xlPart


Sub test1()
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("G1") = 1
.Range("G1").Copy
With .Range("A1:A10")
.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
End With
.Range("G1") = ""
End With
Application.ScreenUpdating = True
End Sub

Mishell

"michdenis" a écrit dans le message de news:
uUDVzB%
Bonjour Isabelle,

La bonne vieille méthode ne fonctionne plus sous Excel 2007
qui consiste à copier 1 dans la cellule et d'utiliser la méthode
"Coller" valeur seulement et opération : multiplication
par macro.
Quelqu'un a une explication ?
'---------------------
Sub test1()
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("A1:A10").Replace ".", ",", xlPart
.Range("G1") = 1
.Range("G1").Copy
With .Range("A1:A10")
.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
End With
.Range("G1") = ""
End With
Application.ScreenUpdating = True
End Sub
'--------------------------------------



"isabelle" a écrit dans le message de groupe de discussion :
#
bonjour Pat,

ajoute ces deux lignes à la fin de ta macro, ps/
Range("IV65536") doit être vide

Range("IV65536").Copy
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd

isabelle

Le 2010-06-04 06:46, PLG a écrit :
Bonjour à tous
Cela fait longtemps que cela me court...
J'ai des données exportées d'une application, elles sont en format texte
et
avec un point comme séparateur au lieu d'une virgule.
Je fais donc un Edition / Remplacer les points par les virgules en macro.
Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien,
les
données passent en mode numérique et le séparateur est bien la virgule.
Hors si je lance cette macro par la suite, le point est bien remplacé par
la
virgule, mais les valeurs restent en format texte et sont donc
inexploitables
en l'état.
C'est frustrant...!!!!
Voici mon bête code :
Sub Macro2()
Range("P23:S35").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
End Sub

Le problème a déjà dû être soulevé....
Merci à vous si vous arrivez à me dépanner.
Bonne journée
Pat

Avatar
michdenis
Bonjour Mishell,

Merci pour ton intervention.

Effectivement, comme l'opération est menée à partir
de VBA, nous n'avons pas à essayer de remplacer le
point dans les cellules utilisées comme séparateur décimal
par la virgule avant d'effectuer la transformation. VBA
emploie le point comme séparateur décimal... On a tendance
à oublier !
;-))




"Mishell" a écrit dans le message de groupe de discussion :
u9E3o0$
Si le séparateur décimal original (à modifier) est le point, il faut le
conserver avant de faire la multiplication par 1.
Car VBA ne reconnaît que le point comme séparateur décimal.
Donc il faut supprimer la commande .Range("A1:A10").Replace ".", ",", xlPart


Sub test1()
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("G1") = 1
.Range("G1").Copy
With .Range("A1:A10")
.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
End With
.Range("G1") = ""
End With
Application.ScreenUpdating = True
End Sub

Mishell

"michdenis" a écrit dans le message de news:
uUDVzB%
Bonjour Isabelle,

La bonne vieille méthode ne fonctionne plus sous Excel 2007
qui consiste à copier 1 dans la cellule et d'utiliser la méthode
"Coller" valeur seulement et opération : multiplication
par macro.
Quelqu'un a une explication ?
'---------------------
Sub test1()
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("A1:A10").Replace ".", ",", xlPart
.Range("G1") = 1
.Range("G1").Copy
With .Range("A1:A10")
.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
End With
.Range("G1") = ""
End With
Application.ScreenUpdating = True
End Sub
'--------------------------------------



"isabelle" a écrit dans le message de groupe de discussion :
#
bonjour Pat,

ajoute ces deux lignes à la fin de ta macro, ps/
Range("IV65536") doit être vide

Range("IV65536").Copy
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd

isabelle

Le 2010-06-04 06:46, PLG a écrit :
Bonjour à tous
Cela fait longtemps que cela me court...
J'ai des données exportées d'une application, elles sont en format texte
et
avec un point comme séparateur au lieu d'une virgule.
Je fais donc un Edition / Remplacer les points par les virgules en macro.
Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien,
les
données passent en mode numérique et le séparateur est bien la virgule.
Hors si je lance cette macro par la suite, le point est bien remplacé par
la
virgule, mais les valeurs restent en format texte et sont donc
inexploitables
en l'état.
C'est frustrant...!!!!
Voici mon bête code :
Sub Macro2()
Range("P23:S35").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:úlse
End Sub

Le problème a déjà dû être soulevé....
Merci à vous si vous arrivez à me dépanner.
Bonne journée
Pat

Avatar
PLG
Bonjour
Je passais par là, j'ai vu de la....
Belle lumière, j'ai testé votre code sur plusieurs colonnes, il fonctionne
parfaitement.
Merci à vous
Bonne journée
Pat

"Mishell" wrote:

Si le séparateur décimal original (à modifier) est le point, il faut le
conserver avant de faire la multiplication par 1.
Car VBA ne reconnaît que le point comme séparateur décimal.
Donc il faut supprimer la commande .Range("A1:A10").Replace ".", ",", xlPart


Sub test1()
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("G1") = 1
.Range("G1").Copy
With .Range("A1:A10")
.PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
End With
.Range("G1") = ""
End With
Application.ScreenUpdating = True
End Sub

Mishell

"michdenis" a écrit dans le message de news:
uUDVzB%
> Bonjour Isabelle,
>
> La bonne vieille méthode ne fonctionne plus sous Excel 2007
> qui consiste à copier 1 dans la cellule et d'utiliser la méthode
> "Coller" valeur seulement et opération : multiplication
> par macro.
> Quelqu'un a une explication ?
> '---------------------
> Sub test1()
> Application.ScreenUpdating = False
> With Worksheets("Sheet1")
> .Range("A1:A10").Replace ".", ",", xlPart
> .Range("G1") = 1
> .Range("G1").Copy
> With .Range("A1:A10")
> .PasteSpecial xlPasteValues, xlPasteSpecialOperationMultiply
> End With
> .Range("G1") = ""
> End With
> Application.ScreenUpdating = True
> End Sub
> '--------------------------------------
>
>
>
> "isabelle" a écrit dans le message de groupe de discussion :
> #
> bonjour Pat,
>
> ajoute ces deux lignes à la fin de ta macro, ps/
> Range("IV65536") doit être vide
>
> Range("IV65536").Copy
> Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
>
> isabelle
>
> Le 2010-06-04 06:46, PLG a écrit :
>> Bonjour à tous
>> Cela fait longtemps que cela me court...
>> J'ai des données exportées d'une application, elles sont en format texte
>> et
>> avec un point comme séparateur au lieu d'une virgule.
>> Je fais donc un Edition / Remplacer les points par les virgules en macro.
>> Lorsque je crée ma macro via l'enregistreur cela fonctionne très bien,
>> les
>> données passent en mode numérique et le séparateur est bien la virgule.
>> Hors si je lance cette macro par la suite, le point est bien remplacé par
>> la
>> virgule, mais les valeurs restent en format texte et sont donc
>> inexploitables
>> en l'état.
>> C'est frustrant...!!!!
>> Voici mon bête code :
>> Sub Macro2()
>> Range("P23:S35").Select
>> Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
>> SearchOrder:=xlByRows, MatchCase:úlse
>> End Sub
>>
>> Le problème a déjà dû être soulevé....
>> Merci à vous si vous arrivez à me dépanner.
>> Bonne journée
>> Pat
>>


.

1 2