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 :

Transformer les virgules en points


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut Transformer les virgules en points
    Bonjour a tous,

    j'ai un petit soucis au niveau de ma macro, j'aimerais automatiser le passage de la virgule en point c'est a dire que j'aimerais passer de 1373913,255 a 1373913.255 sauf que je n'y arrive pas et je trouve pas mon erreur !! voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TEST()
    ActiveSheet.Columns("J:M").Replace _
     What:=",", Replacement:=".", _
     SearchOrder:=xlByColumns, MatchCase:=True
    End Sub
    Peut-être que cette transformation est un cas particulier et nécessite une autre fonction ?

    Merci d'avance !

    Julien

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, de multiples posts sur cette question : une recherche t'apportera la réponse

  3. #3
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    Oui j'ai cherché avant de vous ecrire au moins 4/5 post ! mais a chaque fois les solution ne donne rien quand je lance la macro sur mon fichier .csv !! j'ai essayer avec 4 techniques différentes rien y fait...

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    2 solutions dans cette discussion

  5. #5
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    Merci beaucoup !! j'ai utilisé la deuxième et cela marche très bien !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Convertion()
    Dim myRange As Range
    Dim Cell As Range
    Set myRange = ActiveSheet.Range("A1:AI400")
    myRange.NumberFormat = "@"
    For Each Cell In myRange
        Cell.Value = Replace(Cell.Value, ",", ".")
    Next Cell
    End Sub

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Que donne le test suivant ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
     
    Set Rng = Range("J1:M100")
    Rng.NumberFormat = "@"
    Rng.Select 'commande inutile. Peut etre supprimee
    For Each Cell In Rng
        Cell.Value = Replace(Cell.Value, ",", ".")
    Next
     
    End Sub

  7. #7
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    excuser moi, j'ai modifier mon message du dessus j'ai fais exactement comme vous avec un peu plus de ligne ! merci beaucoup de votre patience et gentillesse !

  8. #8
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    cela marche sauf qu'il me faut 3 chiffres après la virgule et en mettant au format texte les "," sont bien transformées en "." mais les 0 de la fin des nombres sautent...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Convertion()
    Dim myRange As Range
    Dim Cell As Range
    Range("J1:M400").NumberFormat = "0.000"
    Set myRange = ActiveSheet.Range("J1:S400")
    myRange.NumberFormat = "@"
    For Each Cell In myRange
        Cell.Value = Replace(Cell.Value, ",", ".")
    Next Cell
    End Sub
    Avez vous une technique pour remédier a cela ? car pour le coup je ne vois absolument pas

  9. #9
    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 114
    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 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu formates les cellules de la plage de cellules J1:M400 avec 3 chiffres après la virgule et ensuite tu formates les cellules J1:S400 au format texte donc tu supprimes le format précédent.

    J'avoue ne pas comprendre ce que tu cherches à faire.
    As-tu un Windows anglais qui t'oblige à remplacer les "," en point "." ?
    Dans les versions française le séparateur des milliers est un point et le séparateur décimal est une virgule.
    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

  10. #10
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    je vous explique, je veux transformer les , en . car ce sont des coordonnées GPS en cc44 que je veux intégrer dans un logiciel de SIG. Pour integrer Les normes sont d'avoir 3 chiffres apres la virgule sur des coordonnées cartésiennes.. d'où je fait que j'essaye de mettre en format 0.000 et en "."

  11. #11
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Tu peux utiliser la propriete TEXT obtenue par NumberFormat = "0.000" et Columns.AutoFit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set MyRange = Range("A1:A7")
    MyRange.NumberFormat = "0.000"
    MyRange.Columns.AutoFit
     
    For Each cell In MyRange
     a = cell.Text
     cell.NumberFormat = "@"
     cell.Value = Replace(a, ",", ".")
    Next

  12. #12
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    Énorme sa marche niquel ! J'ai adapté a mon cas, mais est il possible d'optimiser l'écriture ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub Convertion1()
    Dim myRange As Range
    Dim Cell As Range
    Set myRange = Range("J2:M500")
    myRange.NumberFormat = "0.000"
    myRange.Columns.AutoFit
     For Each Cell In myRange
     a = Cell.Text
     Cell.NumberFormat = "@"
     Cell.Value = Replace(a, ",", ".")
    Next Cell
     
    Set myRange = Range("N2:N500")
    myRange.NumberFormat = "0.00"
    myRange.Columns.AutoFit
     For Each Cell In myRange
     a = Cell.Text
     Cell.NumberFormat = "@"
     Cell.Value = Replace(a, ",", ".")
    Next Cell
     
    Set myRange = Range("P2:R500")
    myRange.NumberFormat = "0.000"
    myRange.Columns.AutoFit
     For Each Cell In myRange
     a = Cell.Text
     Cell.NumberFormat = "@"
     Cell.Value = Replace(a, ",", ".")
    Next Cell
     
    Set myRange = Range("S2:S500")
    myRange.NumberFormat = "0.00"
    myRange.Columns.AutoFit
     For Each Cell In myRange
     a = Cell.Text
     Cell.NumberFormat = "@"
     Cell.Value = Replace(a, ",", ".")
    Next Cell
    End Sub
    Merci beaucoup vraiment a tous les intervenants, c'est vraiment gentil !!!

  13. #13
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Tu pourrais obtenir un gain de temps significatif en utilisant une variable tableau afin de remplacer les 36000 ecritures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cell.NumberFormat = "@"
    Cell.Value = Replace(a, ",", ".")
    par une seule ecriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myrange.NumberFormat = "@"
    s = Application.Substitute(s, ",", ".")
    myrange.FormulaLocal = s

  14. #14
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    oula euh d'accord mais du coup je ne vois pas comment gérer les multiples 0.00 et 0.000... désoler je suis encore novice :/

  15. #15
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Convertion()
    Set myrange = Range("A1:B7")
    Call TraiteMyRange(myrange)
    End Sub
     
    Sub TraiteMyRange(myrange)
    myrange.NumberFormat = "0.000"
    myrange.Columns.AutoFit
     
    ReDim s(1 To myrange.Rows.Count, 1 To myrange.Columns.Count)
     
     For i = 1 To myrange.Rows.Count
     For j = 1 To myrange.Columns.Count
      'Mettre les valeurs de la propriete TEXT dans le tableau s
      s(i, j) = myrange(i, j).Text
     Next
     Next
     s = Application.Substitute(s, ",", ".")
     
     myrange.NumberFormat = "@"
     myrange.FormulaLocal = s
     
    End Sub

  16. #16
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    Hum d'accord je vais essayer sa alors.... en tout cas un grand merci !

  17. #17
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Adapte a ton cas, voici une facon de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Convertion3()
     
    Dim myRange As Range
    Dim MyFormat As String
     
    MyFormat = "0.000"
    Set myRange = Range("J2:M500")
    Call TraiteMyRange(myRange, MyFormat)
     
    MyFormat = "0.00"
    Set myRange = Range("N2:N500")
    Call TraiteMyRange(myRange, MyFormat)
     
    End Sub
     
    Sub TraiteMyRange(myRange, NbFormat)
     
    myRange.NumberFormat = NbFormat
    myRange.Columns.AutoFit
     
    ReDim s(1 To myRange.Rows.Count, 1 To myRange.Columns.Count)
     
     For i = 1 To myRange.Rows.Count
     For j = 1 To myRange.Columns.Count
     
      s(i, j) = myRange(i, j).Text
     
     Next
     Next
     s = Application.Substitute(s, ",", ".")
     
     myRange.NumberFormat = "@"
     myRange.FormulaLocal = s
     
    End Sub

  18. #18
    Membre confirmé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Par défaut
    D'accord mais je spécifie ou les lettres des colonnes ?

  19. #19
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Eh bien, dans les differents Set myRange de la premiere procedure :

    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 Convertion3()
     
    Dim myRange As Range
    Dim MyFormat As String
     
    MyFormat = "0.000"
    Set myRange = Range("J2:M500")
    Call TraiteMyRange(myRange, MyFormat)
     
    MyFormat = "0.00"
    Set myRange = Range("N2:N500")
    Call TraiteMyRange(myRange, MyFormat)
     
    End Sub

Discussions similaires

  1. Convertir une plage donnée en texte et les virgules en points
    Par lilclem dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/01/2017, 11h00
  2. [RegEx] Regex autorisant les chiffres et les virgules (ou point)
    Par inmotion dans le forum Langage
    Réponses: 6
    Dernier message: 01/02/2009, 17h57
  3. [JavaScript] transformer une virgule en point
    Par ep31 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/09/2007, 16h01
  4. Changer les virgules en points dans un fichier texte
    Par lilibert dans le forum MATLAB
    Réponses: 8
    Dernier message: 19/06/2007, 17h41
  5. transformer la virgule en point avec format
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/07/2006, 14h09

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