Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/10/2011, 20h04   #1
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
Par défaut compter le nombre d'occurences d'un mot dans une chaine

Bonsoir à tous ,

j'ai un exercice à faire je patauge un peu car mon programme ne fonctionne pas

donc je dois calculer le nombre d'occurence d'un mot dans un texte

alors voilà ce que j'ai fait

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
'exercice 4
Public Function nboccurence(ByVal phrase As String, ByVal mot As String) As Integer
Dim res, longueur, lgmot As Integer
Dim caractere As String
res = 0
lgmot = Len(mot)
longueur = Len(phrase)
    For i = 1 To longueur
        caractere = Mid(phrase, i, 1)
    Next i
    For i = 1 To longueur
        If Mid(caractere, i, lgmot) = mot Then res = res + 1
        Next i
nboccurence = res
End Function
 
Sub principal2()
Dim chaine As String
Dim sschaine As String
Dim nb As Integer
 
chaine = InputBox("saisir une phrase")
sschaine = InputBox("saisir un mot")
 
nb = nboccurence(chaine, sschaine)
MsgBox (" la sous chaine apparait " & nb & " dans la chaine ")
 
End Sub
je ne sais pas le programme semble fonctionner pourtant je n'obtient pas le résultat escompté

voilà merci d'avance
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 03h59   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Une autre solution qui est dans mes archives et que j'utilisais avant.
Code :
1
2
3
4
5
Public Function CompterMot(strPhrase As String, strMot As String) As Integer
    Dim strTab() As String
    strTab = Split(strPhrase, strMot)
    CompterMot = UBound(strTab())
End Function
On utilise le mot recherché comme séparateur d'un tableau.

Le problème de ton code est qu'il va trouver ton mot lorsqu'il est inclus dans un mot.

Mais peut-être que l'on s'est mal compris, un mot dans une chaine ou dans un texte ?

Ce qui est deux choses différentes, avec un exemple ce serait cool.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 15h41   #3
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Sauf erreur, il me semble que le code initial ne puisse fonctionner en l'état, la première boucle étant inutile. Le code suivant fonctionne, sous réserve de la remarque précédente de Philippe quant à l'objectif recherché :

Code :
1
2
3
4
5
6
7
8
9
10
11
Public Function nboccurence(ByVal phrase As String, ByVal mot As String) As Integer
Dim res, longueur, lgmot As Integer
Dim caractere As String
res = 0
lgmot = Len(mot)
longueur = Len(phrase)
        For i = 1 To longueur
        If Mid(phrase, i, lgmot) = mot Then res = res + 1
        Next i
nboccurence = res
End Function
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 21h43   #4
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
bonsoir je te remercie de m'avoir répondu


en fait ma prof exige que j'utilise la fonction Instr dans un Do while

voilà merci d'avance .
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 02h42   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Citation:
Envoyé par Philippe JOCHMANS Voir le message
avec un exemple ce serait cool.
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 10h48   #6
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Bonjour,

Un truc comme ça..?

Code :
1
2
3
4
5
6
7
8
i = 1
    Do While i + longueurMot < longueurPhrase
        If InStr(i, phrase, mot) <> 0 Then
            i = InStr(i, phrase, mot)
            Compteur = Compteur + 1
        End If
        i = i + 1
    Loop
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 11h06   #7
Membre du Club
 
Homme
Étudiant
Inscription : janvier 2011
Messages : 330
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 330
Points : 47
Points : 47
merci géniale le code
huître est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h50.


 
 
 
 
Partenaires

Hébergement Web