Bonjour
tu n'as pas compris ce que je voulais dire.
Si tu testes ton code avec cette phrase par exemple
"Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour'"
tu verras que la ponctuation n'est pas prise en compte.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub main() Dim phrase As String phrase = "La meilleure façon de marcher est encore la nôtre, c'est de mettre un pied devant l'autre... et de recommencer." Debug.Print nboccurence(phrase, "La ") Debug.Print nboccurence(phrase, "DE ") End Sub Public Function nboccurence(ByVal phrase As String, ByVal mot As String) As Integer Dim StrTemp As String, StrMot As String StrTemp = LCase(phrase) StrMot = LCase(mot) nboccurence = 0 Do If InStr(1, StrTemp, StrMot) <> 0 Then nboccurence = nboccurence + 1 StrTemp = Right(StrTemp, Len(StrTemp) - InStr(1, StrTemp, StrMot) - Len(StrMot) + 1) Debug.Print StrTemp End If Loop While Trim(StrTemp) <> "" And InStr(1, StrTemp, StrMot) <> 0 End Function
Bonjour,
si tu es en VB6 ce qui est bien dommage en 2022 vue qu'il est de plus en plus difficile, mais pas impossible, de dégoter un vrai IDE VB6 compatible avec les versions Windows 2008 et plus!
Public Function nboccurence(ByVal phrase As String, ByVal mot As String) As Integer nboccurence = UBound(Split(UCase(phrase), UCase(mot))) End Function Sub test() Dim phrase As String phrase = "La meilleure façon de marcher est encore la nôtre, c'est de mettre un pied devant l'autre... et de recommencer." Debug.Print nboccurence(phrase, "La") Debug.Print nboccurence(phrase, "DE ") End Sub
et en VB.net
Private Function ConpteMots(txt As String, C As String) As Integer Return (From b In txt.ToLower.Split() Where b = C.ToLower Select b).Count End Function Sub test() Dim phrase As String phrase = "La meilleure façon de marcher est encore la nôtre, c'est de mettre un pied devant l'autre... et de recommencer." Debug.Print(ConpteMots(phrase, "DE")) End Sub
Bonsoir
si tu es en VB6 ce qui est bien dommage en 2022
c'est exactement ce que je lui ai donné à lire en détail dès ma première réponse.
Et comme les codes précédents tes propositions ne fonctionnent pas avec la ponctuation.
Bonjour,
comme précédemment je précise que nous somme dans la rubrique VB6 et que la ponctuation que j'utilise est conforme à ce langage!
Oui désolé je n'avais effectivement pas compris,
Je suis repartie du code de JeuDuTaquin et je n'ai pas fait gaffe à cette aspect des choses !
oui pour la ponctuation qu'il faut gérer pour la séparation des mots si je voulais garder l'option du Split {version VB.NET} ce qui après réflexion n'est pas une bonne idée !
Tu n'as pas fait plusieurs fois l'erreur, mais vous l'avez tous faite 1 fois ;)
C'est pour ça que j'ai proposé
Salut à tous,
Afin de ne pas laisser un code inachevé, pour l'éternité et l’au-delà...
Sur des règles extrapolant la question primaire, issue d'un fantôme moins bavard qu'un troll...
Je propose ceci:
Sub main() Dim phrase As String phrase = "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." Debug.Print nboccurence(phrase, "BONJOUR") Debug.Print nboccurence(phrase, "de") End Sub Public Function nboccurence(ByVal phrase As String, ByVal mot As String) As Long Dim StrTemp As String, StrMot As String Dim StrOffset As Long Dim sHbyte As String * 1, sFbyte As String * 1 StrTemp = LCase(phrase) StrMot = LCase(mot) nboccurence = 0 Do StrOffset = InStr(1, StrTemp, StrMot) If StrOffset <> 0 Then sHbyte = 0 sFbyte = 0 If StrOffset <> 1 Then sHbyte = Mid(StrTemp, StrOffset - 1) If StrOffset + Len(StrMot) + 1 < Len(StrTemp) Then sFbyte = Mid(StrTemp, StrOffset + Len(StrMot)) nboccurence = nboccurence + IIf(Asc(sHbyte) < &H61 And Asc(sFbyte) < &H61, 1, 0) ' Debug.Print "!"; sHbyte; "!"; , "!"; sFbyte; "!", nboccurence StrTemp = Right(StrTemp, Len(StrTemp) - InStr(1, StrTemp, StrMot) - Len(StrMot) + 1) End If Loop While Trim(StrTemp) <> "" And InStr(1, StrTemp, StrMot) <> 0 End Function
Je note que la proposition de dysorthographie est très bien trouvée. Je la mets de coté pour mes futurs projets!
Donc, pour l'occasion, je balise le mot recherché avec une mémorisation d'un caractère 'Header' (en tête) et un 'Footer' (en queue de mot) pour tester les caractères de césure.
Puis je teste leurs valeurs avec "a" = &h61, car toute la ponctuation se trouve en aval de ce code ASCII.
Si une des balise est fausse, le compteur n'est pas incrémenté.
Seule contrainte, la fonction MID qui ne tolère pas les dépassements de chaînes, avant 1 et après sa longueur.
Donc, on attribue d'office une validation en début et en fin de texte.
Voilà,
Amusez-vous bien.
Bonjour JeuDuTaquin.
Pour que la coloration fonctionne, il faut choisir Basic et non VBScript.
J'ai corrigé
D'abord, dès le début la question prête à confusion, en effet aladin dit
d'un caractere
mais sa variable s'appelle "mot" et comme il teste la longueur de "mot" ça sous entends que ce n'est pas un caractère....
Bref, je vous propose un code qui permet de chercher une chaine (plusieurs caractères), un mot entier, une lettre ou un caractère selon ses envies, le tout à base de regex.
Je n'ai pas VB6 sous la main (d'ailleurs, je ne crois plus l'avoir installé quelque part...), mais je me souviens que les regex en VBA et VB6 sont utilisées de façon très similaire. Donc voici une version avec VBA.
Dim rex As RegExp Dim myMatches As MatchCollection Sub Occurences(ATrouver As String, Source As String) Set rex = New RegExp rex.IgnoreCase = True 'on ignore la casse rex.Global = True 'on continue même après avoir trouvé une occurence rex.Pattern = ATrouver 'le modèle recherché est ATrouver Set myMatches = rex.Execute(Source) 'on effectue la recherche 'on affiche le résultat Debug.Print ("Il y a " & myMatches.Count & " occurence(s) de '" & ATrouver & "' dans '" & Source & "'") If myMatches.Count > 0 Then For i = 0 To myMatches.Count - 1 Debug.Print ("Une occurence '" & myMatches.Item(i).Value & "' à l'index " & myMatches.Item(i).FirstIndex) Next i End If Debug.Print ("__________________________________________________") Debug.Print ("") End Sub
Que l'on va tester de cette façon
Sub test() 'on cherche une chaine qui existe Occurences "bonJour", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche une chaine qui n'existe pas Occurences "coucou", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche une chaine incluse dans un mot Occurences "LE", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche un mot entier (le uniquement) Occurences "\ble\b", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche un mot qui commence par "le" (le, les) Occurences "\ble\w*\b", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche un mot qui contient par "le" (le, les, exemple, meilleure) Occurences "\b\w*le\w*\b", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche une lettre Occurences "b", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." 'on cherche un caractère Occurences ",", "Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR." End Sub
Ce qui retourne
Il y a 5 occurence(s) de 'bonJour' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence 'Bonjour' à l'index 0 Une occurence 'Bonjour' à l'index 129 Une occurence 'Bonjour' à l'index 147 Une occurence 'BONJOUR' à l'index 269 Une occurence 'BONJOUR' à l'index 279 __________________________________________________ Il y a 0 occurence(s) de 'coucou' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' __________________________________________________ Il y a 4 occurence(s) de 'LE' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence 'le' à l'index 33 Une occurence 'le' à l'index 95 Une occurence 'le' à l'index 98 Une occurence 'le' à l'index 163 __________________________________________________ Il y a 1 occurence(s) de '\ble\b' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence 'le' à l'index 98 __________________________________________________ Il y a 2 occurence(s) de '\ble\w*\b' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence 'les' à l'index 33 Une occurence 'le' à l'index 98 __________________________________________________ Il y a 4 occurence(s) de '\b\w*le\w*\b' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence 'les' à l'index 33 Une occurence 'exemple' à l'index 90 Une occurence 'le' à l'index 98 Une occurence 'meilleure' à l'index 159 __________________________________________________ Il y a 7 occurence(s) de 'b' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence 'B' à l'index 0 Une occurence 'B' à l'index 129 Une occurence 'B' à l'index 147 Une occurence 'b' à l'index 268 Une occurence 'B' à l'index 269 Une occurence 'b' à l'index 276 Une occurence 'B' à l'index 279 __________________________________________________ Il y a 5 occurence(s) de ',' dans 'Bonjour, dans cette phrase, tous les signes de ponctuations seront associés aux mots, par exemple le premier mot retourné sera :'Bonjour,' et non 'Bonjour' La meilleure façon de marcher est encore la notre, c'est de mettre un pied devant l'autre... et de recommencer. bBONJOURb .BONJOUR.' Une occurence ',' à l'index 7 Une occurence ',' à l'index 26 Une occurence ',' à l'index 84 Une occurence ',' à l'index 136 Une occurence ',' à l'index 205 __________________________________________________
Quand j'étais petit, la mer Morte n'était que malade.
George Burns