Remplacer une virgule par un point

Eric Dé

XLDnaute Occasionnel
Bonjour à tous,

Je souhaite remplacer les virgules présentes dans les colonnes L à P par des points.

En faisant un ctrl + H et en renseignant les champs "," à remplacer par "." aucun problème, tout fonctionne.

J'ai enregistré un macro toute simple pour que cette manip se fasse par le biais d'un bouton mais quand je clique sur le bouton rien ne se passe !!! (le bouton est bien affecté à la macro !)

Le code enregistré est ci-dessous mais je ne vois pas d'obstacle au bon fonctionnement.

Auriez-vous des pistes ?

Merci d'avance.
Eric


Sub Suppression_Virgule()

Columns("L:p").Select
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("L13").Select

End Sub
 

Chris24

XLDnaute Impliqué
Bonjour

ce code remplace la virgule par un point quelque soit sa position dans la chaine
Code:
Sub SupVirgule()

Virgule = Chr(44)
Point = Chr(46)

NBLignes = Range("feuil2!L1").CurrentRegion.Rows.Count

For Each c In Range("L1:P" & NBLignes)

    MaChaine = c.Value
    Longueur = Len(MaChaine)
    Pos = 1
        Do While Pos < Longueur
            Pos = InStr(1, MaChaine, Virgule)
             If Pos = 0 Then Exit Do
             Mid(MaChaine, Pos) = Point
              c.Value = MaChaine
        Loop
Next
End Sub

Cdt
 

job75

XLDnaute Barbatruc
Bonjour Eric De, Chris24,

Je ne comprends pas bien car les macros des posts #1 et #2 remplacent toutes deux les virgules par des points.

Sauf bien sûr s'il s'agit de nombres décimaux
.

Si l'on veut aussi traiter les nombres décimaux :
Code:
Sub Suppression_Virgule()
Dim c As Range
For Each c In Intersect([L:P], ActiveSheet.UsedRange.EntireRow)
  If c.Text Like "*,*" Then c = "=SUBSTITUTE(""" & c.Text & ""","","",""."")": c = c
Next
End Sub
A+
 

job75

XLDnaute Barbatruc
Re,

S'il y a beaucoup de valeurs à traiter ceci devrait être plus rapide :
Code:
Sub Suppression_Virgule()
Dim c As Range
Application.ScreenUpdating = False
[L:P].Replace ",", ".", xlPart 'pour les textes
For Each c In Intersect([L:P], ActiveSheet.UsedRange.EntireRow)
  If IsNumeric(c) Then If c <> Int(c) Then c = "=SUBSTITUTE(""" & c.Text & ""","","",""."")": c = c
Next
End Sub
Edit : de plus la macro de mon post #5 beugue avec des guillemets dans le texte, testez "a,b,c"

A+
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
195

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2