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 6 et antérieur Discussion :

convertir un text en tableau avec vb


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 3
    Points : 5
    Points
    5
    Par défaut convertir un text en tableau avec vb
    salut, svp j'ai un problème j'aimerai convertir des données texte en tableau base de données avec vb. les données sont organisé de cette forme:

    NCEN=SO1 /12-02-21/11 H 00 MN 18/ARCHIVAGE COMPTEURS HORAIRES

    CLASSE T
    COMMUNICATIONS EFFICACES
    I D A T
    T01 218 3006 2490 60
    T02 0 0 0 0
    T04 396 5146 4739 98
    T05 2276 5146 4859 98
    T06 0 5137 0 98
    T07 0 14 1679 21
    COMMUNICATIONS INEFFICACES CAUSE ABONNE DEMANDEUR
    I D A T
    T12 1018 9 29 0
    T13 801 6 7 0
    T14 57 9 0 0
    T15 0 182 0 0
    T16 2 27 81 0
    T17 0 0 0 0
    T18 30 731 557 12
    T19 0 0 0 0
    ce que je veux faire c de transformer ce texte en 4 tableaux nommé comme suit I, D, A et T. le tableau I va contenir les données de la colonne I de T01 à T19, le tableau D va contenir les données de la colonne D de T01 à T19, le tableau A va contenir les données de la colonne A de T01 à T19 et le tableau T va contenir les données de la colonne T de T01 à T19.
    j'ai le code suivant qui permet de convertir les donnés de la colonne A mais ça ne marche pas :

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Public Sub ImporterTA(strNomFichier As String)
    Dim FSO As New Scripting.FileSystemObject
    Dim oFichier As Scripting.TextStream
    Dim strLigne As String
    Dim strNomChamp As String
    Dim strValeur As String
    Set oFichier = FSO.OpenTextFile(strNomFichier, ForReading)
    Dim oRst As DAO.Recordset
    Dim I As Integer
    'Charge la table en mémoire
    Set oRst = CurrentDb.OpenRecordset("classe TA", dbOpenTable)
    'Tant que non fin de fichier
    While Not oFichier.AtEndOfStream
    'lit la ligne
    strLigne = oFichier.ReadLine
    'Si elle n'est pas vide
    If Trim(strLigne) <> "" Then
    'Si c'est une ligne de date
    If InStr(1, strLigne, "/") <> 0 Then
     
     
     
    If InStr(1, Trim(strLigne), "/") = 1 Then
    dateTA = Mid(Trim(strLigne), 2, 16)
    d = CDate(Mid(dateTA, 1, 8))
     
    heure = CInt(Mid(dateTA, 10, 2))
     
    min = CInt((Mid(dateTA, 15, 2)))
     
    annee = Day(d)
    If Year(d) < 2000 Then
    jour = Year(d) - 1900
    Else
    jour = Year(d) - 2000
    End If
    Mois = Month(d)
    dc = jour & "-" & Mois & "-" & annee
    d = CDate(dc)
    dateTA = d
    End If
    If InStr(1, Trim(strLigne), "/") > 1 Then
    dateTA = Mid(Trim(strLigne), 1, 16)
    End If
     
     
    'Si on est sur un nouvel enregistrement, on le valide
    If oRst.EditMode = dbEditAdd Then oRst.Update
    Else
    'Sinon, si on est pas en mode ajout, on ajoute un nouvel enregistrement
    If Not oRst.EditMode = dbEditAdd Then
    oRst.AddNew
    'Fixe le numéro
    oRst.Fields("NumeroTA") = oRst.RecordCount + 1
    oRst.Fields("dateTA") = dateTA
    oRst.Fields("heure") = heure
    oRst.Fields("minute") = min
    End If
    'Récupère la position des :
     
    If Trim(Mid(strLigne, 1, 6)) <> "" Then
    'Récupère le nom du champ et la valeur
    strNomChamp = Trim(Mid(strLigne, 1, 5))
    strValeur = Trim(Mid(strLigne, 33, 11))
     
    'MsgBox strNomChamp
    ' MsgBox strValeur
    'Remplit la table
    If Len(strNomChamp) > 1 Then
    oRst.Fields(strNomChamp).Value = strValeur
    End If
    End If
    End If
    End If
    Wend
    If oRst.EditMode = dbEditAdd Then
     
    oRst.Update
     
    End If
     
    oFichier.Close
    oRst.Close
    Set oRst = Nothing
    Set oFichier = Nothing
    Set FSO = Nothing
    End Sub
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 089
    Points : 16 652
    Points
    16 652
    Par défaut
    Salut
    Pour te permettre d'avancer
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    Option Explicit
    Private Type TblMe
        I As Integer
        D As Integer
        A As Integer
        T As Integer
    End Type
     
    Dim Extrait As String
    Dim PosDeb As Integer, PosFin As Integer
    Dim TblCoL() As String
    Dim IDAT() As TblMe
     
    Public Sub ImporterTA(strNomFichier As String)
     
    Dim FSO As New Scripting.FileSystemObject
    Dim oFichier As Scripting.TextStream
    Dim strLigne As String
    Dim strNomChamp As String
    Dim strValeur As String
    Set oFichier = FSO.OpenTextFile(strNomFichier, ForReading)
    'Dim oRst As DAO.Recordset
    Dim I As Integer
    'Charge la table en mémoire
    'Set oRst = CurrentDb.OpenRecordset("classe TA", dbOpenTable)
    'Tant que non fin de fichier
     
     
    U = 0
    While Not oFichier.AtEndOfStream
        strLigne = oFichier.ReadLine 'lit la ligne
        '----------- nouvauté ------------------
        If InStr(1, strLigne, "/", vbTextCompare) Then
            PosDeb = InStr(1, strLigne, "/", vbTextCompare)
            Extrait = Mid(strLigne, PosDeb + 1, 8)
            'pour verifier et comprendre
            MsgBox "date : " & CDate(Extrait)
     
            PosDeb = PosDeb + Len(Extrait) + 2 'pour aller rechercher le 2° /
            PosFin = InStr(PosDeb, strLigne, "/", vbTextCompare)
            Extrait = Mid(strLigne, PosDeb, PosFin - PosDeb)
            Extrait = Replace(Extrait, " H ", ":")
            Extrait = Replace(Extrait, " MN ", ":")
            'pour verifier et comprendre
            MsgBox "Heure : " & CDate(Extrait)
            Else
     
            TblCoL = Split(strLigne, " ") ' création d'un tableau de x colonnes
            If Trim(strLigne) <> "" Then
                If Left(strLigne, 1) = "T" Then ' drapaeau qui permet de savoir que les données sont à récupérer
                    U = U + 1 'pour dimensionner dynamiquement le tableau
                    ReDim Preserve IDAT(U)
                    IDAT(U - 1).I = TblCoL(1)
                    IDAT(U - 1).D = TblCoL(2)
                    IDAT(U - 1).A = TblCoL(3)
                    IDAT(U - 1).T = TblCoL(4)
                End If
            End If
        End If
    Wend
    oFichier.Close
     
    'pour verifier et comprendre
    MsgBox "Nbr de ligne data récupéré : " & UBound(IDAT)
     
    For V = LBound(IDAT) To UBound(IDAT) - 1
    MsgBox "Valeur de I : " & IDAT(V).I & vbNewLine _
          & "Valeur de D : " & IDAT(V).D & vbNewLine _
          & "Valeur de A : " & IDAT(V).A & vbNewLine _
          & "Valeur de T : " & IDAT(V).T & vbNewLine
    Next V
     
     
    'oRst.Close
    'Set oRst = Nothing
    Set oFichier = Nothing
    Set FSO = Nothing
    End Sub
    Ce code n'est là que pour te permetre de récupérer les données dans un tableau, c'est pourquoi j'ai enlevé la partie BDs.

    Deux mots IMPORTANTS : Replace et Split, regardes dans l'aide en ligne pour des informations complétes.

    Tu peux récupérer l'aide en ligne ICI Visual Basic 6 et VBScript - MSDN
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Création d'un tableau avec texte et nombre
    Par mfontan dans le forum MATLAB
    Réponses: 6
    Dernier message: 02/02/2010, 15h33
  2. [XL-2003] Tableau avec texte en ordonné
    Par Djromé dans le forum Excel
    Réponses: 7
    Dernier message: 18/01/2010, 13h26
  3. Réponses: 2
    Dernier message: 15/12/2006, 14h22
  4. Convertir un texte en OEM avec Notepad++
    Par Furius dans le forum Autres Logiciels
    Réponses: 17
    Dernier message: 17/10/2005, 13h18

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