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 :

Recherche d'une chaine dans un textbox


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Recherche d'une chaine dans un textbox
    Bonjour,

    j'ai développer un programme qui ouvre un fichier texte contenant des clients ....

    J'ai ajouté a ce programme un bouton recherche qui permet de comparer la chaine de caractere que l'on recherche avec mon textbox qui contient le fichier texte

    voici mon code qui fonctionne:

    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim searchmot As String
            Dim PosMot As Integer
     
            searchmot = TextBox1.Text
            PosMot = InStr(TextBox5.Text.ToLower, TextBox1.Text.ToLower)
     
            If PosMot <> 0 Then
     
                'PosMot va de 1 à len(text1.text) alors que SelStart va de 0 à len(text1.text)-1
                'Il faut donc enlever 1
     
                TextBox5.SelectionStart = PosMot - 1 'défini position du curseur
                TextBox5.SelectionLength = Len(searchmot) 'défini longueur de surlignement
                TextBox5.Focus()   'donne le focus à la boite text1
     
            Else
     
                MsgBox("Client inconnu")
     
            End If
        End Sub
    Le probleme est que si la chaine et trouvé elle et surligné mai jaimerai ajouter un bouton suivant qui permet de voir si il en exsiste d'autre s'emblabe.

    Je recherche GERARD , mon prog surligne le premier GERARD mais impossible de savoir si ma liste en contient d'autre.


    Pouriez vous m'aider???

    merci

  2. #2
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Utilises une boucle For Each:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each searchmot in TextBox5.Text.ToLower
     
          ...
     
    Next

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    dsl mais je vois pa trop comment les utilisées?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    pourrais tu me dire ou place mon for each et me donner un peu plus de précision?

  5. #5
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Ah oui, la boucle for each n'est peut-être pas l'idéal pour les strings qui sont une suite de caractères...

    Mais tu peux faire un truc du genre:

    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim TextBoxTemoin As New TextBox
            TextBoxTemoin.Text = TextBox5.Text
            Dim searchmot As String
            Dim PosMot As Integer
            Dim numIndex = 0
            Dim counter = 0
     
            searchmot = TextBox1.Text
            PosMot = InStr(TextBoxTemoin.Text.ToLower, TextBox1.Text.ToLower)
     
            For Each caract In TextBoxTemoin.Text
     
                If PosMot <> 0 Then
                    counter = 1
                    'PosMot va de 1 à len(text1.text) alors que SelStart va de 0 à len(text1.text)-1
                    'Il faut donc enlever 1
     
                    numIndex = TextBoxTemoin.Text.IndexOf(searchmot)
                    TextBoxTemoin.Text = TextBoxTemoin.Text.Remove(numIndex, searchmot.Length)
                    PosMot = InStr(TextBoxTemoin.Text.ToLower, searchmot.ToLower)
     
                    TextBox5.SelectionStart = PosMot  'défini position du curseur
                    TextBox5.SelectionLength = Len(searchmot) 'défini longueur de surlignement
                    TextBox5.Focus()   'donne le focus à la boite text1
     
                Else
     
                    If counter = 0 Then
                        MsgBox("Client inconnu")
                        Exit For
                    End If
                End If
            Next
     
        End Sub

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Le plus simple serait de construire la liste des index possibles pour le mot recherché (on connait la longueur du mot, seuls les index suffisent).

    Quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim indexes As List(Of Integer) = New List(Of Integer)()
    Dim chaine As String = "ROBERT GERARD BERNARD ALAIN GERARD PAUL"
    Dim recherche As String = "GERARD"
    Dim pos As Integer = - 1
    Do
        pos = chaine.IndexOf(recherche, pos + 1)
        If pos <> - 1 Then
            indexes.Add(pos)
        End If
    End While 
    While  pos <> - 1
    Une fois que tu as ta liste d'index c'est simple. Quand tu cliques sur suivant tu prends le prochain index de la liste et tu modifies le SelectionStart en fonction, la longueur ne changeant pas. Tu peux facilement faire un bouton précédent aussi.

    P.S. : le code à été traduit de C# à VB.Net avec un convertisseur.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    J'vais essayé sa merci beaucoup

Discussions similaires

  1. [VB.NET] Recherche d'une chaine dans une autre
    Par Remedy dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/07/2006, 17h10
  2. Rechercher remplacer une chaine dans 150 procs.
    Par gregco1 dans le forum Oracle
    Réponses: 8
    Dernier message: 14/06/2006, 17h39
  3. Recherche d'une chaine dans une autre chaine
    Par arnapou dans le forum C
    Réponses: 7
    Dernier message: 31/01/2006, 23h10
  4. Recherche d'une chaine dans un champ
    Par Cyberbob002 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/01/2006, 15h21
  5. [Tableaux] Recherche d'une chaine dans un tableau
    Par tom06440 dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2005, 23h27

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