IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment remplacer les virgules par des points en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2021
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2021
    Messages : 84
    Par défaut Comment remplacer les virgules par des points en vba
    Bonjour,

    Je cherche à faire un remplacer de "," vers "." dans un fichier via une macro VBA.

    Quand je lance l'enregistrement d'une macro cela me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Macro3()
    '
    ' Macro3 Macro
    '
     
    '
        Columns("H:H").Select
        Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    End Sub
    Sauf que quand je lance cette macro cela ne fait rien. Alors même que ce que j'ai fait en l'enregistrant a bien fonctionné.

    J'ai lu plein de façon différente de faire ce 'remplacer' mais aucun ne fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        Dim c As Range
        Dim d As String
     
        For Each c In Range([E4], [E65536].End(xlDown))
            d = Replace(c, ",", ".")
     
        Next c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set r = Range([E4], [E65536].End(xlDown))
        r.FormulaLocal = r.Formula

    il doit y avoir une finesse qui m'échappe.

    Quelqu'un aurait une idée ?

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si vous avez une version d'excel 2010 ou supérieure, je passerais par Power Query qui est fait pour cela
    Après avoir chargé votre table, il suffit de sélection la ou les colonnes concernées par ce problème et de modifier le type de format de celles-ci en choisissant "Utiliser les paramètres régionaux" et sélectionner ensuite Décimal Anglais (Etats-Unis)

    Exemple du code produit par Power Query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    let
        Source = Excel.CurrentWorkbook(){[Name="Tableau3"]}[Content],
        #"Type modifié avec paramètres régionaux" = Table.TransformColumnTypes(Source, {{"Prix", type number}}, "en-US"),
        #"Type modifié" = Table.TransformColumnTypes(#"Type modifié avec paramètres régionaux",{{"Prix", type number}})
    in
        #"Type modifié"
    Le code VBA. produit par l'enregistreur conserve le format texte et il faut le reconvertir en nombre en multipliant par 1 la chaine convertie car la propriété FormatNumber "0.0" conserve la valeur en texte malgré tout.

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub t()
      Dim rng As Range
      Dim c As Range
      Set rng = ThisWorkbook.Worksheets("data").Range("F2:F500")
      With rng
      .Replace What:=".", Replacement:=",", LookAt:=xlPart, _
            SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False ' , FormulaVersion:=xlReplaceFormula2
      End With
      For Each c In rng
       c.Value = c.Value * 1
      Next
      Set c = Nothing: Set rng = Nothing
    End Sub
    On peut aussi utiliser la méthode TextToColumns
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2021
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2021
    Messages : 84
    Par défaut
    Bonjour et merci Philippe pour votre solution.

    Je ne suis pas du tout familier de Power Query, un peu plus avec le VBA.

    Malheureusement ce que vous m'avez proposé pour le VBA ne fonctionne pas non plus.

    Je joins mon fichier afin que vous puissiez mieux voir ce qui ne fonctionne pas comme attendu.

    Sur la feuille 3 nommée PRADEAU je souhaiterais que la colonne H s'affiche avec un "." pour la décimale au lieu de la ","

    Le fichier source est le fichier qui contient les données à mouliner avec la macro PRADEAU du fichier 1pim34.

    Merci d'avance.

    1pim34 .xlsm

    source.xlsx

  4. #4
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour

    ça ne marche pas parce que tes cellules contiennent des nombres et que le replace travaille sur des strings. En fait ta cellule ne contient pas de ","
    D'une façon ou d'une autre il va d'abord falloir transformer ta cellule en string pour pouvoir faire le remplacement

    Donc si on reste en VBA par exemple une boucle sur la colonne (pas de meilleure idée à l'instant t avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with MaCellule
       .value = "'" & replace(format(.value,"0.00"),",",".")
    end with
    Note le prefixage par ' : sinon excel qui est serviable et prompt à la conversion réinterprète ta donnée comme un numérique et tu te retrouves avec une "," !

    Question en passant : on est bien d'accord que ce que tu veux dans ta colonne, c'est une chaine de caractères contenant une image de nombre avec un point décimal ? Pas un nombre affiché avec un point décimal ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2021
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2021
    Messages : 84
    Par défaut
    Merci tête de chat,

    Ce que je souhaite c'est que les cellules de ma colonne H de ma feuille PRADEAU soit sous la forme 1215.52 et non 1215,52
    Après ca de toute façon je vais enregistrer ce fichier en .txt.

    Merci ;-)

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2021
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2021
    Messages : 84
    Par défaut
    Je viens de faire le test, cela fonctionne.

    Merci Philippe et Merci tête de chat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/07/2009, 19h49
  2. Remplacer les virgules par des points
    Par vatsyayana dans le forum Excel
    Réponses: 7
    Dernier message: 14/06/2008, 11h13
  3. remplacer les virgules par des tabulations
    Par cartographe dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 08/11/2007, 11h27
  4. Comment remplacer les tabulations par des espaces ?
    Par richarno dans le forum Langage
    Réponses: 7
    Dernier message: 25/10/2007, 13h05
  5. Comment changer des virgules par des points
    Par solorac dans le forum Excel
    Réponses: 2
    Dernier message: 30/07/2007, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo