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

Résolu
yaorens Messages postés 239 Statut Membre -  
yaorens Messages postés 239 Statut Membre -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. geegee
     
    Bonjour

    for i= 1 to len(Tachaine)
    if mid$(tachaine,i,1)=caractererecherche then c=c+1
    next
    msgbox c
    0
  3. geegee
     
    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
  4. yaorens Messages postés 239 Statut Membre 7
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yaorens Messages postés 239 Statut Membre 7
     
    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
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  8. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  9. yaorens Messages postés 239 Statut Membre 7
     
    Merci à vous deux les gars
    0