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 :

L'index est en dehors des limites du tableau [Débutant]


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut L'index est en dehors des limites du tableau
    Bonjour, je suis apprenti, au sein d'une entreprise. Je ne suis pas très doué en informatique, et je dois reprendre un programme qu'un développeur a mis en place.

    Mon robot consiste à aller prendre des informations sur un fichier plat (.txt) et les retransmettre sous mise en forme propre pour l'envoyer vers une base de donnée. Mon soucis est que lorsque je récupère une date, le message
    L'index est en dehors des limites du tableau
    s'affiche sur ma console.

    Comment pourrais je m'affranchir du grand nombre d’espaces entre mon intitulé et ma date (voir exemple impr ecr), afin de ne plus avoir ce message d'erreur. Car lorsque ma date est sur la même ligne que mon intitulé je n'ai aucun problème mais malheureusement je ne choisis pas comment les messages arrivent.

    Je vous remercie j'espère que j'ai été à peu près clair....
    Images attachées Images attachées  

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Tu peux utiliser Replace(stChaine, " ", vbNullString)

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Skaribou Voir le message
    Tu peux utiliser Replace(stChaine, " ", vbNullString)
    Toujours pas, si tu veux je cherche la ligne correspondant à "date ouverture ticket", une fois que le robot la trouve il l'analyse et ne me récupère que la date, or la le client à mal rempli les champs, du coup au lieu que ma date soit sur la meme ligne que date ouverture ticket, c'est comme si il avait fait retour à la ligne. Du coup je voudrais faire en quelque sorte un "suppr" via mon automate afin que la date soit à nouveau en face l'intitulé

    PS: Désolé si mes questions paraissent futiles je ne suis pas très à l'aise avec VB

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    C'est quelle ligne qui t'affiche "Date d'ouverture du fichier :" ?

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Skaribou Voir le message
    C'est quelle ligne qui t'affiche "Date d'ouverture du fichier :" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ElseIf Regex.IsMatch(ligne, "(?i)(.*?)Date(.*?)ouverture(.*?)du(.*?)ticket(\s*):(.*?)") Then
                            ligne = Regex.Replace(ligne, "(?i)(.*?)Date(.*?)ouverture(.*?)du(.*?)ticket(\s*):", "").Trim
                            Parsed_File.Set_Debut_Reel(FormaterDate(ligne, "/", ":"))


    Voici le bout de code qui traite cette ligne

  6. #6
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Bonjour,
    que veux tu faire exactement ?
    Réécrire le fichier texte avec la date en face de "Date ouverture du ticket :" ?
    J’ai des questions à toutes vos réponses!

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par -N4w4k- Voir le message
    Bonjour,
    que veux tu faire exactement ?
    Réécrire le fichier texte avec la date en face de "Date ouverture du ticket :" ?
    Bonjour, oui exactement, de façon à ce que mon robot garde la même configuration. En faite je reçois deux types de fichier, soit celui-ci ou la date ouverture du ticket arrive sous l'intitulé, ou l'autre cas, qui est le bon, ou je recois la date directement en face mon intitulé "date ouverture du ticket" (qui est la configuration initiale de mon robot)

  8. #8
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    ok dac, j'essaie un truc, je reviens dans quelques minutes
    J’ai des questions à toutes vos réponses!

  9. #9
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Bon bah je pense que ce code doit pouvoir faire ce que tu veut.
    Attention, il remplace le fichier traité.. adapte le code si tu veut en faire un autre fichier..

    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
        Sub Main()
     
            Dim file As String = "Z:\Documents MC\test.txt"
     
            Try
                Dim lignes_a_ecrire As New List(Of String)
     
                '##########  Lecture du fichier texte ##########
                Dim myStreamReader As New StreamReader(file)
                Dim ligne As String = ""
                Do
                    ligne = myStreamReader.ReadLine
                    If ligne IsNot Nothing Then
                        Dim myRegex As New Regex("Date(.*?)ouverture(.*?)du(.*?)ticket(\s*):")
                        Dim match As Match = myRegex.Match(ligne)
     
                        'Si la ligne correspond à "une date d'ouverture"..
                        If match.Success Then
                            Dim dateOuverture As String = ligne.Replace(match.Value, "")
     
                            '.. on regarde si la suite est vide..
                            If dateOuverture.Trim = "" Then
                                '..si oui, on prend la ligne suivante..
                                ligne = myStreamReader.ReadLine
                                dateOuverture = ligne.Trim
                                '.. et on recréer la ligne
                                ligne = "Date ouverture du ticket : " + dateOuverture
                            End If
     
                        End If
     
                        'et on ajoute la ligne aux lignes à réécrire
                        lignes_a_ecrire.Add(ligne)
                    End If
     
                Loop Until ligne = Nothing
                myStreamReader.Close()
     
     
     
                '########## Réécriture du fichier ##########
                Dim myStreamWriter As New StreamWriter(file)
     
                For Each ligne In lignes_a_ecrire
                    If ligne IsNot Nothing Then
                        myStreamWriter.WriteLine(ligne)
                    End If
                Next
                myStreamWriter.Close()
     
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
        End Sub
    Y a peut être mieux, mais ça à l'air de fonctionner..


    EDIT: dans la réecriture de la ligne j'avais oublié le "du" de "Date ouverture du ticket"..
    J’ai des questions à toutes vos réponses!

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par -N4w4k- Voir le message
    Bon bah je pense que ce code doit pouvoir faire ce que tu veut.
    Attention, il remplace le fichier traité.. adapte le code si tu veut en faire un autre fichier..

    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
        Sub Main()
     
            Dim file As String = "Z:\Documents MC\test.txt"
     
            Try
                Dim lignes_a_ecrire As New List(Of String)
     
                '##########  Lecture du fichier texte ##########
                Dim myStreamReader As New StreamReader(file)
                Dim ligne As String = ""
                Do
                    ligne = myStreamReader.ReadLine
                    If ligne IsNot Nothing Then
                        Dim myRegex As New Regex("Date(.*?)ouverture(.*?)du(.*?)ticket(\s*):")
                        Dim match As Match = myRegex.Match(ligne)
     
                        'Si la ligne correspond à "une date d'ouverture"..
                        If match.Success Then
                            Dim dateOuverture As String = ligne.Replace(match.Value, "")
     
                            '.. on regarde si la suite est vide..
                            If dateOuverture.Trim = "" Then
                                '..si oui, on prend la ligne suivante..
                                ligne = myStreamReader.ReadLine
                                dateOuverture = ligne.Trim
                                '.. et on recréer la ligne
                                ligne = "Date ouverture du ticket : " + dateOuverture
                            End If
     
                        End If
     
                        'et on ajoute la ligne aux lignes à réécrire
                        lignes_a_ecrire.Add(ligne)
                    End If
     
                Loop Until ligne = Nothing
                myStreamReader.Close()
     
     
     
                '########## Réécriture du fichier ##########
                Dim myStreamWriter As New StreamWriter(file)
     
                For Each ligne In lignes_a_ecrire
                    If ligne IsNot Nothing Then
                        myStreamWriter.WriteLine(ligne)
                    End If
                Next
                myStreamWriter.Close()
     
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
        End Sub
    Y a peut être mieux, mais ça à l'air de fonctionner..
    Merci N4w4k ca fonctionne, c'est parfait. Merci beaucoup

  11. #11
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    De rien, bonne chance pour la suite.

    dans la réecriture de la ligne j'avais oublié le "du" de "Date ouverture du ticket"..
    Oublie pas ça..
    J’ai des questions à toutes vos réponses!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2012, 11h01
  2. Réponses: 4
    Dernier message: 15/11/2011, 09h16
  3. L'index se trouve en dehors des limites du tableau.
    Par kirby33380 dans le forum C#
    Réponses: 3
    Dernier message: 01/04/2010, 11h45
  4. Erreur : "L'index se trouve en dehors des limites du tableau"
    Par dotnetnuke dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 17/07/2009, 17h36
  5. L'index se trouve en dehors des limites du tableau
    Par LaDeveloppeuse dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/10/2007, 21h11

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