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

VB.NET Discussion :

PB pour sortir en point au lieu de virgule dans un fichier TXT [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 51
    Points
    51
    Par défaut PB pour sortir en point au lieu de virgule dans un fichier TXT
    Bonjour,

    j'ai un petit souci de format de nombre quand j'ecrist dans un fichier texte, et je ne souhaiterais pas modifié les options régionales.

    Pour le moment voici mes différents test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sw.Write("{0:000000000000000.00}", "128,70")
    ' Resultat : 000000000000128,70
     
    tmp21 = replace ("128,70", ",", ".")
    sw.Write("{0:000000000000000.00}", tmp21)
    ' Resultat : 128.70
    J'ai fait plein d'autre test.......
    je ce je souhaiterais c'est en résultat : 000000000000128.70

    Cela doit pas etre compliqué mais....

    Merci pour votre aide ou vos pistes

    Thierry

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Sais tu ce que fait ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sw.Write("{0:000000000000000.00}", tmp21)
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    je suis pas sur de comprendre la question.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sw.Write("{0:000000000000000.00}", tmp21)
    Ce code devrait formaté au format demandé la variable tmp21, mais ce n'est pas le cas.

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Et le format demander est ????

    00000.00 = Des chiffres, un point et deux chiffres après le point

    Au contraire, ça marche très bien !
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Moi quand je test ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tmp21 = replace ("128,70", ",", ".")
    sw.Write("{0:000000000000000.00}", tmp21)
    ' Resultat : 128.70
    Mon résultat est 128.70 alors que je souhaiterais 000000000000128.70

  6. #6
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Ce n'est probablement pas la meilleure méthode alors n'hésitez pas à proposer mieux, j'ai rien qui ne me vient à l'esprit hormis donner un specifier au toString de la classe Decimal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Dim a As Decimal = "128,70"
                Dim specifier As String = "0000000000000000.00"
     
     
                Console.WriteLine(a.ToString(specifier).Replace(",", "."))
                'return 0000000000000128.70

    EDIT: Plus propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Dim a As Decimal = "128,70"
                Dim specifier As String = "0000000000000000.00"
     
     
                Console.WriteLine(a.ToString(specifier, System.Globalization.CultureInfo.GetCultureInfo("en-us")))
                'return 0000000000000128.70
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Merci pour ses réponses, mais dans les deux cas j'ai des erreurs !

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Dim a As Decimal = "128,70"
                Dim specifier As String = "0000000000000000.00"
     
     
                Console.WriteLine(a.ToString(specifier).Replace(",", "."))
                'return 0000000000000128.70
    Mon code adapté a partir du tien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(drMYL_A5(0).ToString(specifier).Replace(",", "."))
    Il me dis "Replace n'est pas un membre de char"

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim a As Decimal = "128,70"
                Dim specifier As String = "0000000000000000.00"
     
     
                Console.WriteLine(a.ToString(specifier, System.Globalization.CultureInfo.GetCultureInfo("en-us")))
                'return 0000000000000128.70
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.Writeline(drMYL_A5(0).ToString(specifier, System.Globalization.CultureInfo.GetCultureInfo("en-us")))
    Il me dis "La résolution de surchage a échoue car aucun Write accessible ne peu etre appelée avec ces arguments"

    Ces erreurs son surement du a ma variable drMYL_A5(0)

    Merci pour l'aide

    Thierry

  8. #8
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Pardon, je croyais que ton problème concernait la virgule...
    J'avais pas bien lu, c'est le matin.

    Bon j'ai fais deux ou trois test... Et ça marche très bien, si et seulement si ta variable qui contient 123.25 EST un type numérique (double)

    Ca ca marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim num As Double = 23.2
     MsgBox(String.Format("{0:00000.00}", num))
    Ca non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim num3 As String = "23.2"
     MsgBox(String.Format("{0:00000.00}", num3))
    Si tu partais d'un type numérique, pas de problème, laisse le comme il est.

    Si à la base c'était un string... Alors, soit tu le transformes en double, soit tu travailles sur le string : tu comptes le nombre de caractères, et tu formates à la main.

    Mais String.format sur un string, n'est pas du Regex qui va deviner comment modifier la chaîne en fonction de son contenu.
    Par contre a partie d'un nombre, il le peut, car il connait le format d'entrée.

    (PS : en 10 ans, je n'ai jamais eu a toucher à la culture-info de la machine pour régler un problème de virgule)
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  9. #9
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par Avatar69 Voir le message
    Merci pour ses réponses, mais dans les deux cas j'ai des erreurs !

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Dim a As Decimal = "128,70"
                Dim specifier As String = "0000000000000000.00"
     
     
                Console.WriteLine(a.ToString(specifier).Replace(",", "."))
                'return 0000000000000128.70
    Mon code adapté a partir du tien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine(drMYL_A5(0).ToString(specifier).Replace(",", "."))
    Il me dis "Replace n'est pas un membre de char"

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim a As Decimal = "128,70"
                Dim specifier As String = "0000000000000000.00"
     
     
                Console.WriteLine(a.ToString(specifier, System.Globalization.CultureInfo.GetCultureInfo("en-us")))
                'return 0000000000000128.70
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.Writeline(drMYL_A5(0).ToString(specifier, System.Globalization.CultureInfo.GetCultureInfo("en-us")))
    Il me dis "La résolution de surchage a échoue car aucun Write accessible ne peu etre appelée avec ces arguments"

    Ces erreurs son surement du a ma variable drMYL_A5(0)

    Merci pour l'aide

    Thierry
    Quel type d'objet te renvoi drMYL_A5(n) ?

    Normalement .ToString() te renvoi un objet de type String et donc tu peux faire le replace, mais le message d'erreur indique qu'il renvoi plutôt un char ...

    Et idem pour le 2éme message, ToString a une surcharge qui lui autorise d'avoir 2 paramètres.

    Sauf si tu as surchargé le ToString() de l'objet que te retourne drMYL_A5(n) je comprend pas pourquoi tu as ces erreurs.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Re,

    je m'en suis sortie grâce a vos réponses

    Voila ce que j'ai ecris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sw.write(replace(string.format("{000000000000000.00}, drMYL_A5(0), ",", "."))
    Merci a tous

    Thierry

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/11/2010, 13h28
  2. Récupération de données pour mettre dans un fichier .txt
    Par lince102 dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 24/01/2008, 11h29
  3. [VBA] Menu qui pointe sur une macro contenue dans un fichier xla protégé
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2007, 14h34
  4. Réponses: 6
    Dernier message: 03/05/2007, 13h42
  5. lire le point-virgule dans un fichier .ini
    Par juflata dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 05/07/2004, 12h46

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