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 :

Récupérer une ligne d'un fichier texte et la coller dans le code


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Récupérer une ligne d'un fichier texte et la coller dans le code
    Bonjour à tous,

    Je galère déjà depuis un petit moment, j’espère que vous pourrez me guider ...

    Une partie de mon programme consiste à récupérer des chemins d'accès de fichiers txt et de les enregistrer ligne par ligne dans un nouveau fichier texte, jusqu'à là tout fonctionne : voici le code :
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     Imports System.IO
     
    Public Class UserControl5
     
        Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim FichierselectionEEC1 As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
                FichierselectionEEC1 = OpenFileDialog1.FileName
                TextBox1.Text = FichierselectionEEC1
        End Sub
     
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim FichierselectionEEC2 As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
            FichierselectionEEC2 = OpenFileDialog1.FileName
            TextBox2.Text = FichierselectionEEC2
        End Sub
     
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Dim FichierselectionEEC3 As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
            FichierselectionEEC3 = OpenFileDialog1.FileName
            TextBox3.Text = FichierselectionEEC3
        End Sub
     
        Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            Dim FichierselectionLCA As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
            FichierselectionLCA = OpenFileDialog1.FileName
            TextBox4.Text = FichierselectionLCA
        End Sub
     
        Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
            Dim FichierselectionLCR As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
            FichierselectionLCR = OpenFileDialog1.FileName
            TextBox5.Text = FichierselectionLCR
        End Sub
     
        Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
            Dim FichierselectionFQPA As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
            FichierselectionFQPA = OpenFileDialog1.FileName
            TextBox6.Text = FichierselectionFQPA
        End Sub
     
        Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
            Dim FichierselectionFQPR As String = String.Empty
            Dim OpenFileDialog1 As OpenFileDialog = New OpenFileDialog
            OpenFileDialog1.ShowDialog()
            FichierselectionFQPR = OpenFileDialog1.FileName
            TextBox7.Text = FichierselectionFQPR
        End Sub
     
        Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
     
            Dim sw As String = "C:\Users\TEST\Desktop\Test\CheminEnquetes.txt"
            Dim lines As List(Of String) = File.ReadLines(sw).ToList()
     
     
            If TextBox1.Text = "" Then
            Else : lines(0) = """" & TextBox1.Text & """"
            End If
     
            If TextBox2.Text = "" Then
            Else : lines(1) = """" & TextBox2.Text & """"
            End If
     
            If TextBox3.Text = "" Then
            Else : lines(2) = """" & TextBox3.Text & """"
            End If
     
            If TextBox4.Text = "" Then
            Else : lines(3) = """" & TextBox4.Text & """"
            End If
     
            If TextBox5.Text = "" Then
            Else : lines(4) = """" & TextBox5.Text & """"
            End If
     
            If TextBox6.Text = "" Then
            Else : lines(5) = """" & TextBox6.Text & """"
            End If
     
            If TextBox7.Text = "" Then
            Else : lines(6) = """" & TextBox7.Text & """"
            End If
     
            File.WriteAllLines(sw, lines)
     
            MsgBox("Mise à jour validée")
     
        End Sub
     
     
     
     
     
    End Class
    Le problème que je rencontre arrive ensuite, je veux récupérer une des lignes de ce fichier texte qui contient plusieurs liens vers d'autres fichiers texte.
    Pour être plus clair voici le contenu de la ligne 1 : I:\TEST\FQP14A\Tableaux\TAB-A.TXT
    voici le contenu de la ligne 2 : I:\TEST\EMP14A\TABLEAUX\Tab-D-24032014.TXT
    etc avec une vingtaine de lien vers des fichiers.

    Ce que je n'arrive pas à faire, c'est de récupérer par exemple la première ligne et m'en servir dans le code de mon programme pour remplacer le "I:\TEST\LC14T3\TABLEAUX\TAB-A.TXT":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim readFileLC As System.IO.TextReader = New StreamReader("I:\TEST\LC14T3\TABLEAUX\TAB-A.TXT")
    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim sw As String = "C:\Users\TEST\Desktop\Test\CheminEnquetes.txt"
            Dim linebis As List(Of String) = File.ReadLines(sw).ToList()
            Dim LienLCA As String
            LienLCA = linebis(3)
            MsgBox(LienLCA)
     
     
    Dim readFileLC As System.IO.TextReader = New StreamReader(LienLCA)
    Mais je ne récupère pas le lienLCA et rien ne se produit...

    Est ce que je suis assez clair dans ma demande???
    Si oui, pouvez-vous m'aider ???

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Hello,

    Pour lire une fichier texte, il faut :
    1. Vérifier que le fichier en question existe (IO.File.Exist)
    2. S'il existe, ouvrir le fichier (Dim reader as new IO.StreamReader)
    3. Lire les lignes du fichier. Cela se fait de manière séquentielle. Pas moyen de faire autrement. (reader.ReadLine)
    4. Vérifier qu'on n'a pas atteint la fin du fichier (reader.EndOfStream) et refaire l'étape 3 jusqu'à ce qu'on y arrive (en supposant qu'on veuille lire tout le fichier bien sûr)
    5. Ferme le fichier (reader.Close)


    En gros, un code fonctionnel pour lire tout un fichier serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    If IO.File.Exist(path) Then
        Using reader As New IO.StreamReader(path)
           Dim line As String = reader.Readline()
           While Not reader.EndOfStream
              'traitement à faire sur la ligne en cours
              line = reader.Readline()
           End While
        End Using
    End If
    N.B. : C'est le bloc Using qui, une qu'on en sort, s'occupe de fermer le fichier pour moi.

    P.S. : Dans votre premier morceau de code, vous devez tester que l'utilisateur a bien cliqué sur OK dans la fenêtre de l'OpenFileDialog. Sur cette partie-là, je vous laisse chercher un peu (je vous ai quand même bien mis sur la piste).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Merci Kropernic pour ton aide.

    En fait, le problème est légèrement différent et se situe juste après.
    La lecture du fichier texte fonctionne puisque le code suivant me renvoi bien la ligne voulu grâce à la Msgbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub Button2_click(sender as object, e as EventArgs) Handles Button2_Click 
    Dim sw As String = "C:\Users\TEST\Desktop\Test\CheminEnquetes.txt"
            Dim linebis As List(Of String) = File.ReadLines(sw).ToList()
            Dim LienLCA As String
            LienLCA = linebis(3)
            MsgBox(LienLCA)
    End Sub
    Je clique sur mon bouton et la ligne contenant le lien inscrit dans le fichier texte apparait : "I:\CAPI\FQP14A\BILANS\TAB-A.TXT"

    Mon soucis est que je voudrais récupérer ce lien (contenu dans la variable LienLCA) pour m'en servir dans mon code.
    En fait je voudrais remplacer cette ligne qui fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim readFileLC As System.IO.TextReader = New StreamReader("I:\CAPI\FQP14A\BILANS\TAB-A.TXT")
    Par celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim readFileLC As System.IO.TextReader = New StreamReader(LienLCA)
    En gros je veux que le StreamReader aille chercher ce qu'il y a dans la variable LienLCA plutôt que de taper entièrement le lien


    PS : Je pense avoir réglé le problème de la validation du bouton par l'utilisateur, j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private btnOKClicked As Boolean = False
    btnOKClicked = True

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Je ne vois pas où est le problème alors. Instancier un nouveau StreamReader en lui donnant une variable de type String en paramètre fonctionne très bien. Pour peu bien sûr que la variable contienne un path valide et que le fichier vers lequel il pointe existe.

    Pour la validation par l'utilisateur, vous parlez de savoir si l'utilisateur clique sur ok dans l'OpenFileDialog ??
    Si oui, vous trouverez la bonne méthode ici (dans les exemples).

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Pourtant le problème est bien là.

    Je donne à mon StreamReader la variable LienLCA, qui est bien de type string et qui contient effectivement le lien vers mon fichier, puisque en affichant la variable LienLCA grace à une MsgBox j'obtiens ceci : "I:\CAPI\FQP14A\BILANS\TAB-A.TXT"

    Pourtant cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim readFileLC As System.IO.TextReader = New StreamReader(LienLCA)
    ne fonctionne pas

    alors que celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim readFileLC As System.IO.TextReader = New StreamReader("I:\CAPI\FQP14A\BILANS\TAB-A.TXT")
    fonctionne parfaitement.

    Je ne comprends vraiment pas ....

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Je vais de relire en diagonale le premier message et je n'ai pas vu que vous donniez de message d'erreur (p-e suis-je passé à côté).

    Dire cela ne marche pas, c'est un peu vague... Avez-vous un message d'erreur ? Si oui, lequel ? (mettez le tel quel dans une citation dans votre prochain message)

  7. #7
    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
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    A mon avis c'est un problème de portée de variable
    Citation Envoyé par saorpatrol Voir le message
    La lecture du fichier texte fonctionne puisque le code suivant me renvoi bien la ligne voulu grâce à la Msgbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Private Sub Button2_click(sender as object, e as EventArgs) Handles Button2_Click 
    Dim sw As String = "C:\Users\TEST\Desktop\Test\CheminEnquetes.txt"
            Dim linebis As List(Of String) = File.ReadLines(sw).ToList()
            Dim LienLCA As String
            LienLCA = linebis(3)
            MsgBox(LienLCA)
    End Sub
    La variable LienLCA a une portée dans la sub, une fois sortie, elle est détruite. Donc le messageBox montre bien sa valeur puisque vous êtes encore dans la sub, après elle n'existe plus.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Je n'avais pas pensé à cette possibilité !!

    Comment puis je procéder pour que la variable soit reconnu en dehors du Sub ??

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Suffit de la déclarer en dehors du sub...

    Mais encore une fois, avec le message d'erreur, on pourra arrêter de faire des suppositions.

  10. #10
    Membre habitué Avatar de linke
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par saorpatrol Voir le message
    Je n'avais pas pensé à cette possibilité !!

    Comment puis je procéder pour que la variable soit reconnu en dehors du Sub ??
    il y a deux possibilités :
    soit tu programme en mode objet ( je pense que ce n'est pas ton cas)
    l'autre, que tu programme par module; ajout d'un nouveaux module, dans ce module t'ajoute tous tes variables globale de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Module ModuleGeneral
    Public gblteste1 As String
    Public gblteste2 As String
    Public gblteste3 As String
    Public gblteste4 As String
     
    End Module

    je te conseil de précéder le nom de la variable par gbl (global) comme ca tu les mélanges pas avec les autres variables .

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Le souci c'est que je n'ai aucun message d'erreur.

    De plus la variable est déclaré dans le sub mais l'appel à cette variable est également dans le sub, ce ne devrait pas poser de problème donc ..

    Je met le code en entier, ça sera peut-être plus clair :

    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
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            '===================================LECTEURS TAUX D'AVANCEMENT====================================================
     
            'Lecteur Taux d'avencement L&C
            Try
     
                Dim maListeDeResultat As List(Of ResultatEnquete) = New List(Of ResultatEnquete)
                Dim enteteTableau As Boolean = True
                Dim compteur As Integer = 0
     
     
                'Lecture du fichier texte avec les chemin vers les tableaux
                Dim sw As String = "C:\Users\TEST\Desktop\Test\CheminEnquetes.txt"
                Dim linebis As List(Of String) = File.ReadLines(sw).ToList()
                Dim LienLCA As String
                LienLCA = linebis(3)
     
                Dim line As String
                'Dim readFileLC As System.IO.TextReader = New StreamReader("I:\CAPI\LC14T3\TABLEAUX\TAB-A.TXT")
                'Dim readFileLC As System.IO.TextReader = New StreamReader("C:\Users\TEST\Desktop\Clé\A faire\Loyers et Charges\TAB-A.TXT")
                Dim readFileLC As System.IO.TextReader = New StreamReader(LienLCA)
                While True
                    line = readFileLC.ReadLine()
                    If line Is Nothing Then
                        Exit While
                    Else
                        'je splite les lignes si elles contiennent qqch
                        If line.Contains("|") Then
                            'je suis dans le tableau
                            compteur = compteur + 1
                            If compteur > 2 Then
                                Dim maLigne() As String = line.Split("|")
                                Dim monResLC As ResultatEnquete = New ResultatEnquete
                                monResLC.numeroEnqueteur = maLigne.GetValue(0)
                                monResLC.nomEnqueteur = maLigne.GetValue(1)
                                monResLC.TOT = maLigne.GetValue(2).ToString().Replace(".", ",")
                                monResLC.FAIT_POURCENT = maLigne.GetValue(4).ToString().Replace(".", ",")
                                monResLC.ERV = maLigne.GetValue(6).ToString().Replace(".", ",")
                                maListeDeResultat.Add(monResLC)
                            End If
                        End If
                    End If
                End While
                readFileLC.Close()
                readFileLC = Nothing
                For Each resLC As ResultatEnquete In maListeDeResultat
                    If resLC.nomEnqueteur.StartsWith(nomEnqueteur) Then
                        txtFaitPourcentLC.Text = resLC.FAIT_POURCENT
                        TxtTotLC.Text = resLC.TOT
                        TxtERVLC.Text = resLC.ERV
                    End If
                Next
            Catch ex As Exception
                MsgBox(ex.ToString())
                Dim writeFile As System.IO.TextWriter = New StreamWriter("log.txt", True)
                writeFile.WriteLine("==================================================")
                writeFile.WriteLine(ex.ToString())
                writeFile.WriteLine("==================================================")
                writeFile.Flush()
                writeFile.Close()
                writeFile = Nothing
            End Try

  12. #12
    Membre habitué Avatar de linke
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    avec cette fonction , tu dois avoir une collection de ligne de ton fichier de texte en sortie


    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
     
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <param name="NomFichier"></param>
        ''' <remarks></remarks>
        Function FichierTexte(ByVal _NomFichier As String) As List(Of String)
            Dim sr As StreamReader
            Dim collectionFichier As New List(Of String)
            Dim sLine As String
            Try
                sr = New StreamReader(_NomFichier)
                sLine = sr.ReadLine()
                While Not sLine Is Nothing
     
                    collectionFichier.Add(sLine)
                    sLine = sr.ReadLine()
                End While
                Return collectionFichier
            Finally
                ' Fermeture StreamReader 
                If Not IsNothing(sr) Then sr.Close()
            End Try
        End Function

  13. #13
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Il y a un bug avec les erreurs qui se produisent dans l'event Load en mode debug...

    Englobe tout le code de l'event dans un bloc try catch pour voir le message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub event_load
        Try
            'tout le traitement
        Catch ex as Exception
            MsgBox(ex.Message)
        End Try
    End Sub

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    C'est fait, voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    System.ArgumentException: Caractères non conformes dans le chemin d'accès.
       à System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
       à System.IO.Path.GetFileName(String path)
       à System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
       à System.IO.StreamReader..ctor(String path)
       à Programme_Insee.frmFicheEnq.Form2_Load(Object sender, EventArgs e) dans C:\Users\TEST\Documents\Visual Studio 2013\Projects\Programme Insee\Programme Insee\Form2.vb:ligne 51

  15. #15
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bon bin voilà, le message d'erreur me semble assez explicite...

    A toi maintenant d'analyser la chaîne utilisée pour trouver le caractère qui ne plaît pas.

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Le message est explicite mais la solution un peu moins,
    lorsque je fais un copier coller exacte de ce que j'ai dans mon fichier texte ça fonctionne,
    peut être que les double cotes dans le fichier texte ne sont pas reconnus ....
    Je suis sur que ça doit être une connerie dans le style :-(

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Voici le contenu exact de mon fichier txt, je ne vois pas quel caractère le streamreader ne reconnais pas ?????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    "C:\Users\TEST\Desktop\Clé\A faire\EEC\Tab-D-05052014.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\EEC\Tab-D-12052014.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\EEC\Tab-D-19052014.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\Loyers et Charges\TAB-A.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\Loyers et Charges\TAB-R.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\FQP\TAB-A.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\FQP\TAB-R.TXT"

  18. #18
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bon...

    En supposant que l'erreur se produit sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim readFileLC As System.IO.TextReader = New StreamReader(LienLCA)
    , ajoute juste avant .

    Cela permettre de savoir avec exactitude (et encore :-/) avec quel path tu tentes d'accéder.

    As-tu pris en compte que le premier indice d'une liste est l'indice 0 et non 1 lorsque tu demandes l'élément d'indice 3 dans linebis ?

  19. #19
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Citation Envoyé par saorpatrol Voir le message
    Voici le contenu exact de mon fichier txt, je ne vois pas quel caractère le streamreader ne reconnais pas ?????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    "C:\Users\TEST\Desktop\Clé\A faire\EEC\Tab-D-05052014.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\EEC\Tab-D-12052014.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\EEC\Tab-D-19052014.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\Loyers et Charges\TAB-A.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\Loyers et Charges\TAB-R.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\FQP\TAB-A.TXT"
    "C:\Users\TEST\Desktop\Clé\A faire\FQP\TAB-R.TXT"
    Si le fichier contient les guillemets, il faut les enlever.
    Un chemin d'accès avec un accent, c'est pas top. (à priori ça passe mais des fois, ça pose problème)
    Pareil pour les espaces.

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Je vais supprimer les guillemets et les accents, pour les espaces je ne peux rien y faire, les fichiers texte sont générés par un autre logiciel dont je n'ai pas le contrôle.
    Je teste ça et je vous tiens au courant ...

Discussions similaires

  1. Récupérer une partie d'une ligne d'un fichier texte
    Par exqo77 dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 28/01/2010, 11h13
  2. Récupérer les derniers caractères d'une ligne d'un fichier texte
    Par Laaris dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/01/2009, 17h06
  3. recuperer 3 float dans une ligne d'un fichier texte
    Par obiwankennedy dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2006, 04h59
  4. Réponses: 5
    Dernier message: 23/12/2005, 20h19
  5. Réponses: 4
    Dernier message: 24/09/2005, 10h52

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