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 :

Fichier Plat à restructurer en visual basic 2005


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Par défaut Fichier Plat à restructurer en visual basic 2005
    Salut les gars,

    Je cherche à restructurer un fichier plat .txt

    Fichier plat d'origine :

    Notification de résolution d'incident
    Numéro d'incident :
    C8704641 Cliquez sur le n° ticket pour accéder à son détail dans notre extranet
    Référence de votre incident :
    rt65
    *
    Contact :
    . SUPERVISEUR CPE *
    Adresse e-mail :
    *



    Vos références :
    Nom du compte de regroupement :
    SOCIETE GECOL *
    Nom du site :
    GECOL_120_87LIMOBG001A1_001
    Adresse du site :
    53 Avenue du Roussillon - 87000 LIMOGES
    Master ID :
    0000000001947995 *
    Numéro de compte :
    232243706A
    et je voudrais obtenir ca *:

    Notification de résolution d'incident
    Numéro d'incident : C8704641 Cliquez sur le n° ticket pour accéder à son détail dans notre extranet
    Référence de votre incident : rt65

    Contact : . SUPERVISEUR CPE
    Adresse e-mail :




    Vos références :
    Nom du compte de regroupement : SOCIETE GECOL
    Nom du site : GECOL_120_87LIMOBG001A1_001
    Adresse du site : 53 Avenue du Roussillon - 87000 LIMOGES
    Master ID : 0000000001947995
    Numéro de compte : 232243706A

    Comme puis je faire ?

    J'ai bien essayé un code mais il ne fonctionne 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
    Sub Main()
     
     
            Dim str_texte As String
            str_texte = File.ReadAllText("C:\Users\G19271\Documents\Monfichier.txt")
            'Lit le fichier texte et le stocke dans un tableau
            Dim str_lignes() As String = File.ReadAllLines("C:\Users\G19271\Documents\Monfichier.txt")
            Dim int_compteur As Integer = 0
            Dim int_i As Integer = 0
     
            'On parcourt toutes les lignes du fichier
            For int_i = 0 To str_lignes.Length - 1
                ' Si la ligne n'est pas vide
                If str_lignes(int_i).Length > 0 Then
                    ' On la copie dans l'autre tableau
                    str_lignes(int_compteur) = str_lignes(int_i)
     
                    ' On recherche un ':' suivie d'un retour chariot dans la ligne courante
                    Dim searchStr As String
                    searchStr = ":" & vbCr 'Liste des variables global en bas du fichier
                    If InStr(str_lignes(int_compteur), searchStr) = 1 Then
                        ' Ici, le chaine a été trouvée -> On retire le retour chariot
                        Replace(str_lignes(int_compteur), searchStr, ":")
                        ' Et on y ajoute la ligne suivante  (si il y a encore des lignes dans le fichier
                        If str_lignes.Length >= (int_i + 1) Then
                            str_lignes(int_compteur) = str_lignes(int_compteur) & str_lignes(int_i + 1)
                            int_i = int_i + 1 ' On saute la prochaine ligne
                        End If
                    End If
     
                    ' Incrémente le compteur
                    int_compteur += 1
                End If
     
            Next
            'Supprime les lignes en trop et stocke le tout dans un nouveau fichier
            ReDim Preserve str_lignes(int_compteur - 1)
            File.WriteAllLines("C:\Users\G19271\Documents\destination.txt", str_lignes)
        End Sub
     
    End Module
    Si vous avez un code meilleur qui me réaliserais ce que je souhaite ca serait sympa. Je vous remercie, je ne suis que débutant et ce n'est pas evident. Bonne soirée

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Essaye avec ça
    2 richtextbox (rtbOrigine, rtbRes) pour voir l'évolution.
    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
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'Lit le fichier texte et le stocke dans un tableau
            Dim str_lignes() As String = File.ReadAllLines("C:\Users\G19271\Documents\Monfichier.txt")
            Dim str_res(str_lignes.Count) As String
            Dim int_compteur As Integer = 0
            Dim int_i As Integer = 0
            Dim sSearch As String = ":"
     
            'On parcourt toutes les lignes du fichier
            For int_i = 0 To str_lignes.Length - 1
                rtbOrigine.Text += str_lignes(int_i) & vbCrLf ' richtextbox de visu
                ' Si la ligne n'est pas vide
                If str_lignes(int_i).Length > 0 Then
                    ' On recherche un ':' dans la ligne mais pas dans la suivante
                    If str_lignes(int_i).Contains(sSearch) And (Not str_lignes(int_i + 1).Contains(sSearch)) Then
                        ' Ici, la chaine a été trouvée -> copie la ligne + la suivante dans l'autre tableau
                        str_res(int_compteur) = str_lignes(int_i) & str_lignes(int_i + 1)
                        int_i = int_i + 1 ' On saute la prochaine ligne
                        rtbOrigine.Text += str_lignes(int_i) & vbCrLf 'visu
                    Else
                        ' copie de ligne simple dans l'autre tableau
                        str_res(int_compteur) = str_lignes(int_i)
                    End If
                    rtbRes.Text += str_res(int_compteur) & vbCrLf 'visu
                    ' Incrémente le compteur
                    int_compteur += 1
                End If
            Next
     
            'Supprime les lignes en trop et stocke le tout dans un nouveau fichier
            '...
     
        End Sub
    Je n'ai pas trop eu le temps de repenser complétement la façon de procéder, je suis partie sur ton code avec quelques modif.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 2
    Par défaut
    Merci Hervé c'est gentil .

    Par contre comment remédier à ces deux erreurs :

    str_lignes.Count '' Count is not a member of system Array

    button1.click '' Handles clause requires a WithEvents variable defined in the containing type or one of its base type

    et il me dit que rtbOrigine et rtbRes ne sont pas déclarés


    Désolé pour les questions un peu bête mais je débute.... (Petite précision un peu tardive... c'est vu visual basic 2005)

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Citation Envoyé par roro86 Voir le message
    str_lignes.Count '' Count is not a member of system Array
    Je suis en VB 2010 et je ne peux pas tester en VB2005
    Fait comme tu fesais dans ton code pour connaître le nombre de lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Dim str_res(str_lignes.Length) As String
    _____
    Citation Envoyé par roro86 Voir le message
    button1.click '' Handles clause requires a WithEvents variable defined in the containing type or one of its base type
    Pour le bouton pose un bouton sur ta form doubleClick desus et met le code dedans (si tu copies direstement le code avec la définition du bouton il manque à VB une référence en interne (je ne sais pas si j'ai été bien clair)).

    _____
    Citation Envoyé par roro86 Voir le message
    et il me dit que rtbOrigine et rtbRes ne sont pas déclarés
    Citation Envoyé par rv26t Voir le message
    ...
    2 richtextbox (rtbOrigine, rtbRes) pour voir l'évolution.
    Sur ma form j'ai rajouté 2 RichTextBox(s) que j'ai nommé rtbOrigine et rtbRes pour voir l'évolution du travail.
    Soit tu mets les lignes concernées en commentaire, soit tu rajoutes sur ta form 2 RichTextBox(s) avec les noms indiqués.

    Sinon quelques remarques
    Il vaudrait mieux utiliser un while plutôt qu'un for (puisque nous sautons parfois des lignes).
    Je n'ai pas géré le contrôle de la dernière ligne (ne pas dépasser la dimention du tableau)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Visual Basic 2005 + ACCESS
    Par AzertyH dans le forum Access
    Réponses: 1
    Dernier message: 27/03/2006, 09h25
  2. Visual Basic 6 Professional VS Visual Basic 2005 Express
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 25/02/2006, 23h33
  3. Visual basic 3.0 et visual basic 2005
    Par matmuth dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/12/2005, 09h54
  4. eBook <<Introduction à Visual Basic 2005 gratuit>&g
    Par Faze dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/10/2005, 11h11

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