[déplacé VB.net -> VBA] Fonction fournie dans l'aide (INSTR) mais fainéantise ob [Résolu]

Signaler
Messages postés
6
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
23 novembre 2009
-
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
-
Ma fonction ne fonctionne pas! J'ai vraiment besoin d'aide SVP :

Function Nb(Mot As String) As Integer
Dim i As Integer
Nb = 0
For i = 1 To Len(Mot)
If trouve(a, Mid(Mot, i, 1)) <> 0 Then
Nb = Nb + 1
End If
Next i
MsgBox "le nombre de a est " Nb

17 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
BONJOUR

Function CountVowels(ByVal sExpression As String) As Integer
    Dim iRet As Integer, i As Integer
    
    iRet = 0
    For i = 1 To Len(sExpression)
        If InStr(1, "aeiouyAEIOUY", Mid$(sExpression, i, 1)) Then iRet = iRet + 1
    Next i
    CountVowels = iRet
End Function



MsgBox CountVowels("Un bonjour ne coute rien, quand je serai grand je lirai ce lien : http://www.vbfrance.com/reglement.aspx")


[hr]
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut
ton a est à considérer comme une chaine de caractères donc entre guillemets

If trouve("a", Mid(Mot, i, 1)) <> 0 Then

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Attention VBA n'est pas VB Net : vérifier les catégories de messages

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
6
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
23 novembre 2009

Oui c vrai merci, mais malheureusement même apres ce changement, cela ne fonctionne toujours pas!!!
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut ça va ? Ouais moi ça va merci.

Alors, les problèmes:

- Pas de bonjour aux personnes de qui tu souterais de l'aide.
- Pas de s'il vous plait
- Mauvais endroit pour poster. Même aucun rapport.
- Aucune explication sur ce que tu veux faire avec ta fonction, c'est à nous de deviner
- Aucun détail sur le problème que te pose ta fonction, encore à nous de deviner.
- qu'est-ce que "a" et d'où vient-il ? Si tu veux compter le nombre de a c'est trouve("a", Mid(Mot, i, 1))
- qu'est-ce que trouve ?
- trouve(a, Mid(Mot, i, 1)) <> 0 tu peux remplacer par Mid$(Mot, i, 1)="a" ou Mid$(Mot, i, 1)=a selon ce que veux dire a pour toi
- MsgBox "le nombre de a est " Nb ne marche pas, c'est MsgBox "le nombre de a est " & Nb et encore mieux, MsgBox "le nombre de a est " & CStr(Nb)
- accessoirement, Nb pour un nom de fonction n'est pas très parlant.
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Désolé je suis resté avec ton trouve(a, Mid(Mot, i, 1))
Ainsi cela marchera mieux

If Mid(Mot, i, 1) = "a" Then


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
Messages postés
6
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
23 novembre 2009

Bonjour, désolé pour le manque de politesse.

En fait à l'origine je veux compter le nombre de voyelles et j'ai ici simplifier au calcul du nombre de a car je n'y arrivai pa. Le problème est que je voudrais utiliser la fonction trouve car sinon cela marche tres bien avec select case.

Merci beaucoup de m'aider!
cordialement
Messages postés
6
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
23 novembre 2009

Merci Galain pour ta reponse, effectivement cela marche. Par contre quand je veu le généraliser a toutes les voyelles, du coup cela ne fonctionne plus!

comment fais je??
merci
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Merci d'avoir donné plus d'informations

En fait, c'est bien d'avoir réduit le problème au comptage des "a". Une fois que ta fonction sera correcte il ne te restera plus qu'a l'utiliser un certain nombre de fois (pour chaque voyelle). Pas très optimisé mais si tu débute, vaut mieux regarder d'abord le côté fonctionnel.

Donc si tu as une fonction, appellons la CompteNbCar(ByVal Mot As String) qui te retourne le nombre de "a", pour qu'elle puisse compter n'importe quel caractère, tu devras lui donner un élément supplémentaire pour travailler: le caractère à compter. Par exemple CompteNbChar(Byval Caractere As String, ByVal Mot As String)
et utiliser "Caractere" pour tes tests.
Messages postés
6
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
23 novembre 2009

Ah javoue que la je n'ai pas tout compris.
Désolé mon niveau n'est pas trop élevé.

J'ai bien saisi les fonctions que j'utilise ici, len, mid,...
Mais vraiment je ne voi pas pourquoi sa ne fonctionne pas!
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
Re... (je ne sais pas ce qu'est devenue ma première réponse... j'ai robablement oublié de valider...)
Juste une question : où est utilisée la fonction TROUVE, dans tout çà ?
rroberti n'y tient plus ? Qu'en pense-t-il ?
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Encore une fois, très malin PCPT.

Au risque de passer pour un ignard complet, je ne peux m'empecher de saluer quand je vois ce genre d'astuce toute simple.
Messages postés
6
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
23 novembre 2009

Merci PCPT,

Effectivement cela fonctionne tres bien.
Bon ya plus ma fonction trouve mais si je comprend bien InStr est son equivalent VBA??

Donc je ne peux pas utiliser trouve?
Merci
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
[^^happy17]
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
jmf0 -> non j'avais supprimé le thread pour (malheureusement) les mêmes raisons (titre, thème, politesse, question mal posée, aucun code montré).
nb : il n'y avait aucune réponse lors de la suppression

ayr -> merci. simple oui, plus c'est simple, moins çà consommera dans la plupart des cas, plus çà sera "maintenable"
(exemple : prendre en compte les accents, juste la chaine à modifier)


bonne soirée
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
Instr est bien l'équivalent de la fonction TROUVE, mais pas dans l'exemple de code de PCPT (pas du tout le même mécanisme car dans ce code Instr cherche dans la chaîne des voyelles alors que TROUVE cherche dans la chaîne à traiter)...
Voilà ta réponse, rroberti.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
4
Bon...
Je suppose alors que ma réponse a été validée au moment de la suppression du thread.

Je précise alors ici qu'il s'agit là d'un exercice imposé et qu'il est demandé à rroberti de se servir de la fonction TROUVE d'Excel...