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 :

Nombre d'occurences d'un mot dans une phrase


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut Nombre d'occurences d'un mot dans une phrase
    Bonjour;
    Je cherche à créer un petit programme sous vb6 pour calculer le nombre d'occurences d'un mot dans une phrase.
    Lorsque je tente d'exécuter mon programme, j'ai le message suivant:
    "Erreur de compilation, qualificateur incorrect."
    Phrase dans la boucle for est alors pointé par le débogeur (phrase.length).
    Pouvez-vous m'aider à déterminer la source d'erreur? Merci d'avance.

    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
     
    Private Sub cmdRechercher_Click()
     
    Dim motrecherche As String
    Dim phraseorigine As String
    Dim phrase() As String
    Dim nbrmotrecherche As Integer
    Dim i As Integer
     
    motrecherche = txtRecherche.Text
    phraseorigine = lblTexte.Caption
    phrase() = Split(phraseorigine)
    nbrmotrecherche = 0
     
    If motrecherche <> "" Then
      For i = 0 To phrase.length - 1
          If phrase(i) = motrecherche Then
              nbrmotrecherche = nbrmotrecherche + 1
          End If
      Next i
     
      txtOccurence = CStr(nbrmotrecherche)
     
    Else
        MsgBox "La chaîne ne peut être vide.", vbInformation, "Comptage des mots."
     
    End If
     
    End Sub

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    ubound(Phrase) pas phrase.length
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Function NbrOccurences(psPhrase As String, psMot As String) As Integer
        Dim laPhrase() As String
        Dim liI As Integer
        Dim liCount As Integer
        liCount = 0
        laPhrase = Split(psPhrase)
        For liI = 0 To UBound(laPhrase)
            If UCase(laPhrase(liI)) = UCase(psMot) Then liCount = liCount + 1
        Next
        NbrOccurences = liCount
    End Function

  4. #4
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Function NbrOccurences(Phrase As String, Mot As String) As Integer
     
    Phrase = UCase(Phrase)
    Mot = UCase(Mot)
    NbrOccurences = (Len(Phrase)-Len(Replace(Phrase,Mot,""))) div Len(Mot)
     
    End Function
    Je ne suis pas chez moi mais je pense que cela devrait fonctionner.
    Explications :
    On enlève toutes les occurences de Mot dans Phrase.
    On prend la longueur de la phase de départ moins la longueur de la phrase
    d'arrivée, (donc la longueur de tout ce qui à été enlevé) et on divise par la taille de la chaine recherchée (on compte le nombre de fois que la chaine à été enlevée)

    Défaut :
    Voici une phrase : "on va prendre l'avion sinon nous allons le rater"
    Si on recherche le mot "on", on en trouve 4 :
    "on va prendre l'avion sinon nous allons le rater"
    Je pense que ca peut être réctifié mais faut plancher un peu dessus, perso je n'ai pas le temps, désolé
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  5. #5
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    Salut;
    j'ai retouché un peu le code, cela marche. Mais maintenant je souhaite que des mots rentrent dans l'occurence même s'ils ne sont pas à la forme correcte (pluriel / singulier, ' ou pas).
    La phrase "Le silence de ces espaces infinis m'effraie." est en caption du label (lblTexte.Caption).
    Ex:
    Lorsque je demande effraie j'ai 0. Hors je souhaite avoir 1
    Lorsque je fais silences j'ai 0. Hors je souhaite avoir 1

    Je pense que la fonction inStr peut résoudre le problème. Je vais tester.

    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
    Private Sub cmdRechercher_Click()
     
    Dim motrecherche As String
    Dim phraseorigine As String
    Dim phrase() As String
    Dim nbrmotrecherche As Integer
    Dim i As Integer
     
    motrecherche = txtRecherche.Text
    phraseorigine = lblTexte.Caption ' "Le silence de ces espaces infinis m'effraie."
    phrase() = Split(phraseorigine)
    nbrmotrecherche = 0
     
    If motrecherche <> "" Then
      For i = 0 To (UBound(phrase))
          If phrase(i) = motrecherche Then
              nbrmotrecherche = nbrmotrecherche + 1
          End If
      Next i
     
      txtOccurence = CStr(nbrmotrecherche)
     
    Else
        MsgBox "La chaîne ne peut être vide.", vbInformation, "Comptage des mots."
     
    End If
     
    End Sub

  6. #6
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    Merci les gars.

    Voici une autre manière que j'ai trouvé pour tenir compte des "." et des " ' ".
    Biensûr ce n'est que pour le cas d'une phrase fixe extraite d'un label par exemple.

    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
     
    Option Explicit
     
    Private Sub cmdQuitter_Click()
    End
    End Sub
     
    Private Sub cmdRechercher_Click()
    Dim strMot As String
    Dim intMot As Integer
    Dim intPos As Integer
     
        strMot = Me.lblTexte.Caption
        intPos = 0
        intMot = -1
        'Pour annuler le dernier incrément du compteur
     
     
        If strMot <> "" And txtRecherche.Text <> "" Then
            Do
                intPos = InStr(intPos + 1, strMot, txtRecherche.Text)
                intMot = intMot + 1
            Loop Until intPos = 0
            txtOccurence = CStr(intMot)
     
        Else
            MsgBox "La chaîne ne peut être vide.", vbInformation, "Comptage des mots."
        End If
     
    End Sub

  7. #7
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Citation Envoyé par cirtey
    Merci les gars.
    Bon! Apparemment, les filles, ça compte pas!

    Faut pas oublier de le dire, si c'est

  8. #8
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Mais si Zaza tu comptes beaucoup pour nous!
    [SIZE="2"]Dis moi qui tu suis, je te dirais qui je Hais!
    Heureux est l'étudiant, qui comme la rivière suit son cours sans sortir de son lit

    Mon premier Tutoriel


    A 80% des cas je résouts mon problème en rédigeant une nouvelle discussion, du coup je ne poste que 20% de mes problèmes...

  9. #9
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Absolument Zaza, tu comptes beaucoup. Et moi, je raffoles de ton petit accent canadien
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

Discussions similaires

  1. nombre d'occurences d'un mot dans une phrase
    Par florent090 dans le forum Débuter
    Réponses: 11
    Dernier message: 19/05/2012, 14h43
  2. Compter le nombre d'occurences d'un mot dans une table
    Par Scots dans le forum Requêtes
    Réponses: 0
    Dernier message: 11/03/2011, 09h36
  3. Réponses: 6
    Dernier message: 12/12/2010, 23h09

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