Comment compter le nombre d'occurences d'une lettre dans textbox

Résolu
Bonjour,

J'aimerais savoir comment compter le nombre d'occurences d'un cractère dans un text box en vb 6.0
Pourriez vous m'aider ?

8 réponses

  1. Contributeur
    mais je suivant l'idée de GeeGee, c'est plus cour
        Function NbOc2(ByVal Chaine As String, ByVal Cherch As String) As Int16  
            Return Len(Chaine) - Len(Replace(Chaine, Cherch, ""))  
        End Function

    Dans le module d'une form avec un label...
        Label1.Text = NbOc("La chaine sélectionnée pour le test","e")
    A+

    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    NOTE : Je ne répond pas aux MP pour les questions techniques.
    2
    1. Bonjour

      for i= 1 to len(Tachaine)
      if mid$(tachaine,i,1)=caractererecherche then c=c+1
      next
      msgbox c
      0
      1. Bonjour

        Function NbOc(Chaine As String, Ch As String, Optional RC As Boolean = False) As Long
        If RC Then
        NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , 0))) / Len(Ch)
        Else
        NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , 1))) / Len(Ch)
        End If
        End Function
        0
        1. Bonjour Geegee , stp , tu pourrais commenter un peu ton code , je ne le comprends pas ,

          d'abord , attends , je vais voir si je suis bien , tu me dis si c'est coorect ok , histoire de voir si je te suis !!

          D'abord , tu fais une fonction , qui prend en paramètre la chaine de caractère , et le caractère ( dont on cherchera le nombre d'occurences )
           mais le Optional RC as Boolean = False 
          je ne comprends pas , pourrais tu me dire ce qu'il représente concrètement ??

          Ensuite , .................. là , je ne comprends vraiment ton code.

          Moi au paravant en vb 6.0 j'avais pensé à un code du genre
           dim compteur as long ' ma variable qui comptera le nombre d'occurences 
          
          compteur = 0 ' j'initialise d'abord mon compteur à zéro 
          
          Pubic function retourneoccurence (Byval chaine as string , lettre as char ) as long
          
          for i = 0 to len(Me.Text.text) Then
          
          If Me.Text.text(i) = "lettre" Then
          
          compteur = compteur +1
          End If
          
          Next
          
          return compteur
          
          End Sub
          
          


          Mais , quand je fais Me.Text.Text(i) , cela ne passe pas parce que qu'apparamment , celà ne considère pas Me.Text.Text() comme un tableau de chaines de caractères
          Il y'a t'il uune autre option , et pourrais tu commenter un peu ton code que je puisse comprendre ??
          0
          1. geegee , et puis dans le code que tu as mis , tu as écris
            
            Function NbOc(Chaine As String, Ch As String, Optional RC As Boolean = False) As Long
            If RC Then
            NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , 0))) / Len(Ch)
            Else
            NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , 1))) / Len(Ch)
            End If
            
            End Function
            
            
            


            Pourquoi posez une condition sur RC , car qu'il retourne vrai ou faux , tu effectues des opérations .
            Ensuite , tu n'aurais pas oublié , deux éléments
            - d'abord la portée de la fonction publique ou privée ( ou bien en vb6 , cela n'a pas d'importance on peut s'en passer ?,)
            - ensuite ta fonction doit bien retourner quelque chose , je crois savoir que tu as oublié
             un return RC 
            0
            1. Contributeur
              Bonjour,

              le principe est de mesurer la longueur de la chaine, puis celle de la nouvelle chaine obtenue en remplaçant le caractère recherché par "" (rien)
              Tu peux refaire la fonction en la simplifiant.
              Une fonction retourne la valeur qui est calculée dans la variable portant son nom.
              ex :
              function deux()
              deux = 1+1
              end function
              retournera 2

              eric
              0
              1. Contributeur
                Bonjour tous,
                Je pense que tu est en VB.Net..
                Dans un module..
                Function NbOc(ByVal Chaine As String, ByVal Cherch As String) As Int16   
                Dim C, e As Int16   
                    For C = 1 To Len(Chaine)   
                        If Microsoft.VisualBasic.Mid(Chaine, C, 1) = Cherch Then e = e + 1   
                    Next   
                    Return e   
                End Function 

                Note : Microsoft.VisualBasic. pas toujours nécessaire, je l'ai mis par sécurité.
                Dans le module d'une form avec un label...
                    Label1.Text = NbOc("La chaine sélectionnée pour le test","e")
                A+
                Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
                NOTE : Je ne répond pas aux MP pour les questions techniques.
                0
                1. Merci à vous deux les gars
                  0