Remplacer un caractère en VBA

Signaler
Messages postés
11
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
19 décembre 2017
-
Messages postés
11
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
19 décembre 2017
-
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


Bonsoir,
Il faudrait plutôt changer le format de ta cellule :
ActiveCell.NumberFormat = "TonFormat"

Les différents formats sont ici.
Bonne soirée.
Messages postés
11
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
19 décembre 2017

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
Messages postés
11
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
19 décembre 2017

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
Messages postés
11
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
19 décembre 2017

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
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
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.
Messages postés
11
Date d'inscription
mardi 23 juin 2009
Statut
Membre
Dernière intervention
19 décembre 2017

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