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 :

Remplacer un point par une virgule dans un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Par défaut Remplacer un point par une virgule dans un tableau
    Bonjour,

    J'ai renseigné mon tableau à l'aide d'un doc .csv où les "," exprimant les décimales sont des "." (je n'ai donc pas 1,5 mais 1.5) ce qui empêche tous calcul entre les colonnes.
    L'idée serait de faire un équivalent de


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For j = 2 To UBound(tableau, 1)
    tableau(j, 2) = tableau(j, 2).Replace(".", ",")
    Next j
    mais Replace ne fonctionne apparemment que sur les feuilles
    Serait il possible de modifier cela au sein même du tableau?

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Replace fonctionne très bien en VBA, et sur les tableaux!
    à condition de le programmer correctement!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    For j = 2 To UBound(tableau, 1)
    tableau(j, 2) = Replace(tableau(j, 2), ".", ",")
    Next j

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    le replace ne changera rien!
    si dans la colonne [A] tu as des points pour des virgules comme caractère décimale alors!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("A:A").value=range("A:A").value
    la virgule est le caractère décimal Excel!
    le point es le caractère décimal vb!

    l'inversion de l'un sera vu par l'autre comme du texte et réciproquement i il faut alimenter l'autre en fonction du format de l'un et réciproquement!

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Non mais là il est pas dans des cellules, il est dans tableau chargé à partir d'un csv!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Philippe PONS Voir le message
    Non mais là il est pas dans des cellules, il est dans tableau chargé à partir d'un csv!
    oui mais il va en faire quoi de son tableau coté vb c'est le point le décimal!

    et vu que son tableau est très certainement un variant un numérique dans son tableau sera vue comme un string!

    si il veut manipuler son tableau pour faire des comparaison il n’aura pas d'autre choix que d'utiliser Val si le décimal est un point ou Cdbl si c'est une virgule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For j = 2 To UBound(tableau, 1)
    if val(tableau(j, 2)) = cdbl(tableau(j+1, 2)) then
    Next j
    mais pour enrichir Excel il faut qu'il soit un point!
    Dernière modification par Invité ; 26/04/2016 à 13h26.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Par défaut
    Citation Envoyé par Philippe PONS Voir le message
    Replace fonctionne très bien en VBA, et sur les tableaux!
    à condition de le programmer correctement!
    En effet!!!!
    Ca marche parfaitement merci

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Par défaut
    Je reviens sur ce problème car il n'est finalement pas entièrement résolu.
    Cette méthode marche bien quand la nombre n'est pas trop long (159.58 devient bien 159,58 mais 147405937.11000001 devient 14740593711000000)
    Serait il possible de contourner le problème tout en gardant "Replace"?

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Essaies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For j = 2 To UBound(tableau, 1) 
    tableau(j, 2) = Replace(tableau(j, 2), ".", ".")
    Next j

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Par défaut
    Non ça ne marche pas, en remplaçant "." par "." je me retrouve avec l'incompatibilité de type du début dès que je veux faire des opérations entre les colonnes

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Oui, il y a un problème.
    Mais je n'ai pas le même chose que toi.
    J'ai plutôt une perte de décimale.
    En passant par un string, les décimales sont conservées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub test_replace()
        Dim dblVar As Variant
     
        dblVar = 147405937.11
        Debug.Print Replace(147405937.11, ".", ",")
        dblVar = Replace(147405937.11, ".", ",")
        Debug.Print dblVar
        dblVar = "147405937.11000001"
        dblVar = Replace(dblVar, ".", ",")
        Debug.Print dblVar  ' affiche bien : 147405937,11000001
    End Sub

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 18
    Par défaut
    Donc si j'ai bien compris, j'enregistre mon tableau as String dès le début puis une fois le remplacement fait je le repasse en Variant?



    Citation Envoyé par Philippe PONS Voir le message
    Oui, il y a un problème.
    Mais je n'ai pas le même chose que toi.
    J'ai plutôt une perte de décimale.
    En passant par un string, les décimales sont conservées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub test_replace()
        Dim dblVar As Variant
     
        dblVar = 147405937.11
        Debug.Print Replace(147405937.11, ".", ",")
        dblVar = Replace(147405937.11, ".", ",")
        Debug.Print dblVar
        dblVar = "147405937.11000001"
        dblVar = Replace(dblVar, ".", ",")
        Debug.Print dblVar  ' affiche bien : 147405937,11000001
    End Sub

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

Discussions similaires

  1. [XL-2003] Remplacer un point par une virgule dans Textbox
    Par tibs1502 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2013, 10h48
  2. [PROC] Remplacer un point par une virgule dans une Proc Tabulate
    Par PAULOM dans le forum SAS Base
    Réponses: 2
    Dernier message: 20/08/2009, 08h36
  3. remplacement du point par une virgule
    Par thierry007 dans le forum Windows Forms
    Réponses: 13
    Dernier message: 13/05/2009, 20h11
  4. remplacer un point par une virgule
    Par paolo2002 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/04/2008, 09h43
  5. [C#] Remplacer un point par une virgule
    Par SLicTa dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/01/2008, 13h08

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