Remplacement automatique de la décimale . par la décimale

Bonjour ; je télécharge des requêtes sur divers sites ; certains m'envoient leur séparation entre unités et décimales par un point, d'autres par une virgule. Je suis ensuite obligé de faire la transformation à la main ; comment, dans une colonne, rendre automatique le remplacement d'un point par une virgule ?

Bonjour, plusieurs méthode

-Soit avec la fonction "rechercher-remplacer" après avoir sélectionné votre colonne.

-Soit une macro à lancer

-Soit une macro évènementielle. feuille change()

-Utilisation de l'enregistreur de macro pour les actions répétitives.

Pour plus de précision il faudrait plus de renseignement. votre choix ? la colonne concernée ?

Vous ne perdez pas de temps, merci.

Fonction "remplacer", c'est ce que je fais actuellement et que j'ai appelé méthode manuelle.

Je ne suis pas très expert mais je veux bien essayer d'installer une macro ; les colonnes concernées sont AD et AH. Le tout est que la transformation du point en virgule dans les 2 colonnes concernées soit automatique.

Merci.

bonjour,

une proposition

Sub remplacerpointdec()
    Range("AD:AD,AH:AH").Replace ".", ",",lookat:=xlpart
End Sub

edit : manque le xlpart pour traiter tous les cas de figure, merci MDO100

Bonjour,

Regarde du côté de Power Query.

Si le site retourne des tables, les modifications sont rapides et le tout est dynamique (presque !).

Ruban, Données, Récupérer et transformer, A partir du web.

Cdlt.

Bonjour à toutes et tous,

@Colombin,

A tester:

Sub PointparVirgule()
   With Columns("AD:AH")
      .Replace what:=".", Replacement:=",", LookAt:=xlPart, SearchOrder:=xlByRows
      .NumberFormat = "0.00"
      .HorizontalAlignment = xlRight
    End With
End Sub

Cordialement.

Merci, dès que j'ai une minute, je m'y colle.

Bonjour,

@mdo100, h2so4 : j'avais fait un même code similaire hier mais impossible de passer mes cellules au format nombre, il a fallu que je rajoute une instruction "Range.TextToColumns" (équivalent de la fonction convertir afin de valider mes nouvelles entrées), vous êtes sûr qu'elle ne manque pas dans vos codes ?

Je suis curieux désolé ..

Merci et bonne soirée !

@Ergotamine,

Tu as raison, le format n'était pas au format nombre.

Je propose:

Sub PointparVirgule()
   With Columns("AD:AH")
      .Replace what:=".", Replacement:=".", LookAt:=xlPart, SearchOrder:=xlByRows
      .NumberFormat = "general"
      .HorizontalAlignment = xlRight
    End With
End Sub

Cordialement.

Bonsoir,

quant à moi, avec ma version UK et en faisant l'opération inverse"de virgule vers point" pour avoir les mêmes conditions de test, j'ai bien des nombres.

Bonjour ; j'ai dit ne pas être expert ; je confirme, c'est ma 1ere expérience avec les macros.

J'ai quand même installé la dernière version de mdo100 : ça ne marche pas, j'obtiens "erreur d'exécution 28, espace pîle insuffisant".

L'erreur peut provenir d'une mauvaise installation ; qu'en pensez-vous ?

Bonjour,

Bonsoir,

quant à moi, avec ma version UK et en faisant l'opération inverse"de virgule vers point" pour avoir les mêmes conditions de test, j'ai bien des nombres.

A ceci explique surement cela, je n'avais pas fait le lien ! Nous verrons à l'utilisation.

Merci et bonne journée !

Bonjour,

Pour le fun !...

capture d ecran 2021 01 26 080529
Public Sub ConvertTextToNumber()
Dim tbl As Variant, arr() As Double, i As Long, k As Long
    With ActiveSheet
        tbl = .Cells(1).CurrentRegion.Value
        ReDim arr(UBound(tbl) - 1)
        For i = 2 To UBound(tbl)
            arr(k) = WorksheetFunction.NumberValue(tbl(i, 1), ".", " ")
            k = k + 1
        Next i
        .Cells(2, 1).Resize(UBound(arr)).Value = Application.Transpose(arr)
    End With
End Sub

Bonjour,

Alors là ... Bravo Jean-Eric. Je ne savais pas que cette formule était native sous Excel !

La deuxième solution n'est pas lourde en terme d’exécution sachant que nous faisons cellule à cellule ?

Bonne journée.

Re,

On traite les données avec des tableaux (arrays) et on travaille en mémoire.

C'est la restitution dans la feuille qui prendra plus de temps.

Bon, maintenant, si on doit gérer 200.000 lignes !?

Cdlt.

Rectification à mon précédent message : ça marche !

déjà je suis très content , merci à vous tous.

Maintenant, je vais approfondir ....

J'ai utilisé la macro toute l'année ; subitement elle ne fonctionne plus ; je ne crois pas avoir modifié quoi que ce soit ; je ne sais pas où chercher ; pouvez-vous m'aider ? Merci

Bonsoir…

Pour ton fun Jean-Eric, un plus quand ton tableau s’appelle BD :

Sub ConvertTextToNumber()
  [BD].Item(1, 2).FormulaR1C1 = "=NUMBERVALUE([@Texte],""."","" "")"
  [BD] = [BD].Value
End Sub

Nota : presque immédiat avec 80 000 nombres constants. Cependant s’ils sont trouvés par des formules, il faudra inhiber celles-ci

Application.Calculation = xlCalculationManual

puis les libérer

Application.Calculation = xlCalculationAutomatic 

et bien entendu prévoir le cas où ils sont sollicitées par des évènnementielles ou autres ...

Rechercher des sujets similaires à "remplacement automatique decimale"