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

Résolu
rroberti Messages postés 6 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 23 novembre 2009 - 23 nov. 2009 à 21:43
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 23 nov. 2009 à 23:46
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2009 à 23:17
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]
3
Profil bloqué
23 nov. 2009 à 22:01
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
0
Profil bloqué
23 nov. 2009 à 22:02
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
0
rroberti Messages postés 6 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 22:04
Oui c vrai merci, mais malheureusement même apres ce changement, cela ne fonctionne toujours pas!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
23 nov. 2009 à 22:10
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.
0
Profil bloqué
23 nov. 2009 à 22:12
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
0
rroberti Messages postés 6 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 22:13
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
0
rroberti Messages postés 6 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 22:19
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
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
23 nov. 2009 à 22:45
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.
0
rroberti Messages postés 6 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 23:06
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!
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
23 nov. 2009 à 23:26
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 ?
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
23 nov. 2009 à 23:30
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.
0
rroberti Messages postés 6 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 23:36
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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
23 nov. 2009 à 23:38
[^^happy17]
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2009 à 23:38
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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
23 nov. 2009 à 23:42
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.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
23 nov. 2009 à 23:46
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...
0
Rejoignez-nous