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 :

Format de nombre inconnu dans fichier texte


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 79
    Points
    79
    Par défaut Format de nombre inconnu dans fichier texte
    Bonjour,

    J'ai un fichier texte qui a les nombre stockés de la façon suivante :
    -3272.26 est stocké 32722O
    +1626332.05 est stocké 16263320E
    -24229.76 est stocké 242297O
    -561.40 est stocké 5614}

    Quelqu'un a-t-il déjà rencontré ce type de stockage dans un fichier et sait récupérer le nombre ?

    Pour aller plus loin et pour ceux qui feront cette recherche à l'avenir, voici des précisions...
    Je reçois sous forme de fichier texte des écriture bancaires (norme confb pour les relevés de compte pour ceux à qui ça parle). Chaque ligne possède un mouvement.
    Mon soucis est que je ne connais pas le format qui est utilisé pour stoquer les nombre (le montant en zone 91 à 104 toujours pour les mêmes).

    Je lis le fichier via un StreamReader et je voudrais placer le montant dans un double: impossible, erreur. J'ai essayé pour le fun decimal, sbyte, single mais évidemment c'est pareil. Mais bon, j'ai essayé...

    Merci.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 312
    Points : 743
    Points
    743
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Dans les fichiers d'extrait bancaire, le dernier chiffre du montant (= le premier chiffre des centimes) est encodé de la façon suivante :

    Si le montant est créditeur :
    0 = {
    1 = A
    2 = B
    3 = C
    4 = D
    5 = E
    6 = F
    7 = G
    8 = H
    9 = I

    Si le montant est débiteur :
    0 = }
    1 = J
    2 = K
    3 = L
    4 = M
    5 = N
    6 = O
    7 = P
    8 = Q
    9 = R


    Par exemple, 1960N est 196.05€ (Débiteur).

    Tu devra traiter ces "chiffres" comme des chaines de caractères (String), et faire la correspondance lettre-chiffre toi-même .

    Cordialement,
    Stève

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Salut

    un petit coup de main
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
      Imports System.IO
    Public Class ClassBank
        Private listbanknumbers As New List(Of String)
        Dim code As New Dictionary(Of String, String)
        Public Sub ReadAllFile(ByVal pathfichierbancaire As String)
            Try
                listbanknumbers = System.IO.File.ReadAllLines(pathfichierbancaire).ToList
                Makecode()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Private Sub Makecode()
            Dim letter As Char = "A"c
            code.Add("{", "0")
            code.Add("}", "-0")
            For iter As Integer = 1 To 9
                code.Add(letter, iter.ToString)
                letter = Convert.ToChar(Convert.ToInt32("A"c) + iter)
            Next
            letter = "J"c
            For iter As Integer = 1 To 9
                code.Add(letter, (-1 * iter).ToString)
                letter = Convert.ToChar(Convert.ToInt32("J"c) + iter)
            Next
        End Sub
     
        Private Function Getvalue(ByVal bankvalue As String) As Double
            Dim digit, value As String
            Dim balance As Double
            value = String.Empty
            digit = bankvalue.Substring(bankvalue.Length - 1, 1)
            If code.TryGetValue(digit, value) Then
                balance = Convert.ToDouble(bankvalue.Substring(0, bankvalue.Length - 1)) / 10
                If value.Length = 1 Then
                    balance += Convert.ToDouble(value) / 100
                Else
                    balance += Convert.ToDouble(value.Substring(1, 1)) / 100
                    balance *= -1
                End If
            End If
            Return Convert.ToDouble(balance.ToString("#0.00"))
        End Function
        Public Function GetlistValues() As List(Of Double)
            Dim listrealnumbers As New List(Of Double)
            Try
                For Each valbank As String In listbanknumbers
                    listrealnumbers.Add(Getvalue(valbank))
                Next
     
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            Return listrealnumbers
        End Function
    End Class
    pour utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim listval As New List(Of Double)
            Dim mybank As New ClassBank
            mybank.ReadAllFile(Application.StartupPath & "\text1.txt")
            listval = mybank.GetlistValues

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Points : 79
    Points
    79
    Par défaut
    Merci beaucoup à tous les deux. Réponse très utile que je vais garder dans un coin et code faisant gagner du temps. Le top...
    Laumon.

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

Discussions similaires

  1. Format de nombre (année) dans du texte
    Par gillou13 dans le forum Webi
    Réponses: 1
    Dernier message: 22/08/2011, 10h54
  2. [fichier_texte]Modif nombres dans fichier texte
    Par begginner dans le forum VBA Word
    Réponses: 3
    Dernier message: 22/07/2010, 23h23
  3. [Batch] Trier des nombres ordre croissant dans fichier texte
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 20
    Dernier message: 01/11/2009, 10h22
  4. [XL-2007] Format javascript dans fichier texte via urldownloadtofile VBA
    Par patbo2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2009, 12h44
  5. Insertion dans fichier texte + rapide que TStringList ?
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/02/2004, 11h34

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