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 :

[VB]recherche dans une partie d'un fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut [VB]recherche dans une partie d'un fichier texte
    re bonjour; j'ai encore des problemes.

    Je vous explique, je dois aller chercher des infos dans un fichier .txt et ramené les mots situés entre 2 caracteres que je choisis.

    Pour cela, j'ai cette fonction :
    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
    Private Sub test2(debut As String, fin As String)
    'rechercher les mots entre crochets
    ListView1.ListItems.Clear
    Dim texte As String, texte2 As String
    Open App.Path + "\Cryptage.ini" For Binary As #1
        texte = Input(LOF(1), #1)
     
        texte = Replace(texte, debut, "|$")
        texte = Replace(texte, fin, "|")
     
        Dim tabSplit() As String
     
        tabSplit = Split(texte, "|")
     
        Dim cmpt As Long
         For cmpt = LBound(tabSplit) To UBound(tabSplit)
            If Left(tabSplit(cmpt), 1) = "$" Then
            ListView1.ListItems.Add , , Mid(tabSplit(cmpt), 2)
            End If
        Next cmpt
    Close #1
    End Sub
    La en l'occurence, je lui fait chercher test2 "LIBELLE=", ";"

    Mais maintenant, il faudrait, pk pas dans cette focntion aussi, que je fasse comprendre a mon programme qu'il ne faut qu'il cherche seulement dans une partie du fichier. Je veux qu'il cherche depuis un nom que je selectionne dans un liste (combo1.text) jusqu'au 1er symbole "[" qu'il rencontre et la, franchement, aprés de nombreux essais, je demande de l'aide..

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    regarde ce que te donne la methode Instr: Instr(depart,montexte)renvoie la position du texte que tu cherche en commençant à une positon départ donnée s'il te renvoie 0 c'est qu'il est arrivé à la in du texte sans trouver ce que tu cherche.

    salut[/code]
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  3. #3
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Je ne vois pas en quoi ca peut m'aider.
    En fait, j'explique tout l'enoncé du probleme : j'utilise ma fonction test2 pour me ramené tout les mots de mon fichier .txt situé entre crochets et me les mets dans un combobox. Ensuite, avec cette même fonction, il faut que je cherche les mots situés entre "LIBELLE=" et ";" mais je dois mettre une limite de recherche. Je veux qu'en fonction de combo1.text, il cherche par exemple, du 1er mot situé entre crochet jusq'au 2eme ou du 2eme jusqu'au 3eme..

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    C'est un peu le même principe que précédemment, je ne vois pas trop où est la difficulté.

  5. #5
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    En fait, c'est parce que je n'arrive pas a faire partir ma recherche par rapport au résultat de ma combobox. Dans la combo, la il y a pour le moment JBY, HEBERGEMENT et TEST. et je voudrait qu'en fait, si JBY est selectionné, qu'il fasse la recherche suivante en partant de JBY jusqu'a qu'il rencontre HEBERGEMENT et si c'est le dernier de la liste qui est selectionné, qu'il aille de ce dernier jusqu'a la fin.
    En fait, je n'arrive pas a lui mettre de limite

  6. #6
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    ps : je peux modifier mon fichier txt a volonté pour rajouter des symboles qui peuvent m'aider au reperage dans le fichier genre * par exemple

  7. #7
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Je voudrait aussi savoir si c'est possible, disons aprés que j'ai recherché un mot, de mettre juste la ligne dans laquelle il est dans la fichier txt dans une variable.

    Exemple : Dans
    [JBY]
    VPN=O
    USER=AVOCAT;PWD=***;BASE=AVOCAT;LIBELLE=LYON;IP=10.145.6.221
    USER=AVOCAT;PWD=***;BASE=AVOCAT;LIBELLE=PARIS;IP=10.145.6.222

    Une fois avoir trouvé LYON, je voudrait que
    ligne = USER=AVOCAT;PWD=***;BASE=AVOCAT;LIBELLE=LYON;IP=10.145.6.221

    Pour pouvoir effectuer des recherches juste sur cette ligne

  8. #8
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    dans ton TabSplit lorsque tu as séparé les mots contenus entres [], tu as aussi les mots contenus entre deux mots encadrés.
    Par exemple si TabSplit(2) contient $JBY alos TabSplit(4) contient $HEBERGEMENT et TabSplit3 contient ta chaine ou tu veux faire ta recherche de LIBELLE=.

  9. #9
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    En effet je n'avais pas vu cela..
    Je vais donc regarder par rapport a ça et une fois que j'ai trouvé (grace a toi), je mettrai mon resultat ici

  10. #10
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    Donc finalement j'ai fais comme cela :

    La fonction qui rempli mon combo en cherchant les mots entre crochets :
    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
    Private Sub rempli_combo(debut As String, fin As String)
    'rechercher les mots entre debut et fin
    Dim texte As String
    Open App.Path + "\Cryptage.ini" For Binary As #1
        texte = Input(LOF(1), #1)
        texte = Replace(texte, debut, "|$")
        texte = Replace(texte, fin, "|")
     
        M_tabSplit = Split(texte, "|")
        Dim cmpt As Long
        For cmpt = LBound(M_tabSplit) To UBound(M_tabSplit)
            If Left(M_tabSplit(cmpt), 1) = "$" Then
            Combo1.AddItem Mid(M_tabSplit(cmpt), 2)
            End If
        Next cmpt
    Close #1
    End Sub



    Puis la fonction qui rempli ma list en fonction du combobox en cherchant dans certaine partie du 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
    Private Sub remplir_list1(debut As String, fin As String)
    ListView1.ListItems.Clear
    Dim nb As Integer
     
        Select Case Combo1.ListIndex
     
                Case "0"
                    nb = 2
                Case "1"
                    nb = 4
                Case "2"
                    nb = 6
                Case "3"
                    nb = 8
                Case "4"
                    nb = 10
                Case "5"
                    nb = 12
                Case "6"
                    nb = 14
                Case "7"
                    nb = 16
                Case "8"
                    nb = 18
                Case "9"
                    nb = 20
                Case "10"
                    nb = 22
     
        End Select
     
            M_tabSplit(nb) = Replace(M_tabSplit(nb), debut, "|$")
            M_tabSplit(nb) = Replace(M_tabSplit(nb), fin, "|")
     
        Dim tabSplit() As String
     
        tabSplit = Split(M_tabSplit(nb), "|")
     
        Dim cmpt As Long
         For cmpt = LBound(tabSplit) To UBound(tabSplit)
            If Left(tabSplit(cmpt), 1) = "$" Then
            ListView1.ListItems.Add , , Mid(tabSplit(cmpt), 2)
            End If
        Next cmpt
    Close #1
     
    End Sub
    Ps: je n'ai pas trouvé mieux que de mettre un select case pour qu'il cherche en fonction du combo.

    Voila, merci bidou encore une fois

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Mama mia ... tous ces cases pour finalement exprimer :

    nb = Combo1.ListIndex + 2 + Combo1.ListIndex
    ou

    nb = 2 + (2*Combo1.ListIndex )
    ou

    nb = 2*(1 + Combo1.ListIndex
    .............

  12. #12
    Membre actif Avatar de malhivertman1
    Inscrit en
    Avril 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 337
    Points : 221
    Points
    221
    Par défaut
    En effet jmfmarques, je n'avais pas modifier dans le forum mais j'avais mis
    nb = 2 * (Combo1.ListIndex + 1)

    J'avais vu ça aprés mais merci qd même de ton intérét

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/10/2014, 10h23
  2. copier une partie d'un fichier texte dans un autre
    Par Valarauko dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/10/2007, 21h17
  3. extraire une partie d'un fichier texte
    Par Mydriaze dans le forum Langage
    Réponses: 5
    Dernier message: 15/06/2007, 12h46
  4. recuperer 3 float dans une ligne d'un fichier texte
    Par obiwankennedy dans le forum C++
    Réponses: 3
    Dernier message: 14/03/2006, 03h59
  5. Recherche d'une partie d'un champ texte
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 13/01/2006, 18h04

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