Remplacer un caractère en VBA

Pap77 Messages postés 21 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 17 avril 2021 - 27 juin 2010 à 18:16
Pap77 Messages postés 21 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 17 avril 2021 - 29 juin 2010 à 15:27
Bonjour
PB avec VBA pour Excel :
Je télécharge des valeurs présentées par une chaîne de caractères dont le séparateur est un .

La macro : ActiveCell.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Fonctionne, sauf avec certaines valeurs:
Ex 23.60 devient 23,60 23612.25 devient 23612,25
Par contre 627.355 devient 627355,00
il semble que cela se produit lorsqu'il y a 3 chiffres après le point?
Quelqu'un peut-il me dire d'où vient l'erreur?
Merci d'avance

6 réponses

Utilisateur anonyme
27 juin 2010 à 19:07
Bonsoir,
Il faudrait plutôt changer le format de ta cellule :
ActiveCell.NumberFormat = "TonFormat"

Les différents formats sont ici.
Bonne soirée.
0
Pap77 Messages postés 21 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 17 avril 2021
27 juin 2010 à 19:17
Merci de ta réponse rapide
L'application d'un format nombre est sans action!!!!
La chaine 23,60 reste alignée à gauche et n'est donc pas considérée comme un nombre!!!
Que faire?
Bonne soirée
0
Pap77 Messages postés 21 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 17 avril 2021
28 juin 2010 à 10:31
Bonjour
Quelques infos supplémentaires
Après quelques manips : remplacer "." par "," fonctionne en direct (édition-->rechercher-->remplacer)
Par contre pas la macro s'il y a plus de 2 chiffres après le "." Le"." est supprimé mais la "," n'est pas mise.
Pour que le format nombre soit pris en compte il faut effacer le caractère invisible qui semble précéder le premier chiffre de nombre (Cela se fait facilement "à la main" mais je ne sais pas le faire en macro.
Merci de votre aide

Bonne journée
0
Pap77 Messages postés 21 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 17 avril 2021
28 juin 2010 à 17:13
Bonsoir
Solution trouvée ici : http://forum.pcastuces.com/remplacer_point_par_virgule_dans_vba-f19s9092.htm
Il suffit de remplacer le "." par un "."!!!!!!! Bizarre! Vous avez dit bizarre!...Mais ça "marche!"
Merci à Bastien06!
Bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
29 juin 2010 à 01:24
Bonsoir,

Tout est dans le code :

Sub Transformation_Point_en_Virgule()
' La difficulté vient de 2 choses :
' - Excel gère les séparateurs Décimaux "," et des Milliers "."
' - Le PC par défaut fait de même...
' - Voir dans Outils>Options>Internationnal

' -------- ATTENTION : Pour fonctionner il faut que les nombres
' avec le point en décimale soient rentrés dans des cellules
' dont le format est en TEXTE.
' ==> Vérifier dans la barre de formule que le point est bien présent!

    ' Désactive la gestion des séparateurs
    Application.UseSystemSeparators = False

    ' Remplace le point par le point > Ce n'est plus Excel mais Windows
    ' qui s'occupe de faire ça, et le remplacement valide l'entrée, or
    ' c'est Excel qui s'occupe de l'entrée donc en nombre... je sais
    ' c'est inexprimable !
    Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

    ' Ré-active la gestion des séparateurs
    Application.UseSystemSeparators = True

    ' Remet le format de cellule en Standard
    ActiveCell.NumberFormat = "General"

End Sub


Amicalement,
Us.
0
Pap77 Messages postés 21 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 17 avril 2021
29 juin 2010 à 15:27
Bonjour Us
Merci de ta réponse on ne peut plus claire
Même si mon PB été résolu sur mon ordinateur la gestion des séparateurs me garantira, je l'espère, une certaine portabilité de ma macro
Amicalement
Pap
0
Rejoignez-nous