Je cherche à créer une fonction qui me permettra de compter le nombre d'occurrence d'un caractère particulier ("a" par exemple) dans une chaîne quelconque.
J'ai essayé avec cette "fonction" mais aucune valeur ne remonte (si toujours 0 !!!).
Merci de votre aide.
Function renvoie(s As String)
Dim i As Integer
Dim resultat As Integer
resultat = 0
For i = 1 To Len(s)
If Mid(s, i, 1) = a Then
resultat = resultat + 1
End If
Next
End Function
Sub test_renvoie()
Dim s As String ' chaîne de test, donnée par l'utilisateur
Dim nb_de_a As Integer ' nb de a dans s
Dim test As Integer
s = InputBox("Texte ?")
test = renvoie(s)
MsgBox ("nb_de_a = " & test)
End Sub
A voir également:
Vba compter le nombre de caractère dans une chaine
Compter le nombre d'occurrence d'un caractère dans une chaine - Meilleures réponses
Compter le nombre d'occurence d'un caractère dans une chaine - Meilleures réponses
Bonjour à tous et désolé de m'immiscer dans la discussion,
à propos du $ pour les fonctions de chaînes, non seulement VB renvoi une chaîne comme le dit Cheyenne, mais en plus il ne perd pas de temps à déterminer le type en entrée, il attend une chaîne et si ce n'en est pas une, il râle.
Je cherche à créer une fonction qui me permettra de compter le nombre d'occurrence d'un caractère particulier ("a" par exemple) dans une chaîne quelconque.
J'ai essayé avec cette "fonction" mais aucune valeur ne remonte (si toujours 0 !!!).
Merci de votre aide.
Function renvoie(s As String)
Dim i As Integer
Dim resultat As Integer
resultat = 0
For i = 1 To Len(s)
If Mid(s, i, 1) = a Then
resultat = resultat + 1
End If
Next
End Function
Sub test_renvoie()
Dim s As String ' chaîne de test, donnée par l'utilisateur
Dim nb_de_a As Integer ' nb de a dans s
Dim test As Integer
s = InputBox("Texte ?")
test = renvoie(s)
MsgBox ("nb_de_a = " & test)
End Sub
Je suis désolé mais
If Mid(s, i, 1) = "a"
ne fonctionne toujours pas.
Inutile de répéter ta question, on avait compris.
Est-ce que tu as réflechis à ce que t'as dit ShayW ?
D'autre part, tu seulement tu ouvrais l'aide de VB, tu saurais que la syntaxe de déclaration ta fonction est incomplète, même si elle peut fonctionner comme ça.
Function renvoie(s As String) As Integer
D'autre part, où, dans ta fonction, renvoies-tu le résultat ?
Nulle part.
Ajoute ceci dans ta fonction :
renvoie = resultat
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate) [img]http://allproj
Vous n’avez pas trouvé la réponse que vous recherchez ?
Oui, le $ est facultatif, ce n'est qu'une histoire de compilation/bibliothèque, mais ça ne coûte rien de le mettre et permet de se rappeler que la fonction renvoie une String.
Oui, certes, c'est facultatif, mais il n'empêche que le traitement est plus rapide avec $, car sans le symbole la fonction renvoie un type Variant. Puis c'est une bonne habitude de "typer", ce n'est pas à toi que je vais apprendre cela.