begin process at 2012 02 13 15:47:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

 > FONCTION POUR SÉPARER ET SÉLECTIONNER LES MOTS VOULUS DANS UNE PHRASE

FONCTION POUR SÉPARER ET SÉLECTIONNER LES MOTS VOULUS DANS UNE PHRASE


 Information sur la source

Note :
2,5 / 10 - par 2 personnes
2,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Modules Niveau :Débutant Date de création :11/05/2003 Date de mise à jour :12/05/2003 14:48:13 Vu / téléchargé :6 067 / 242

Auteur : HeXoR

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

C'est une fonction pour séparer et sélectionner les mots voulus dans une phrase. Je vais vous expliquer son fonctionnement :
Mot(str As String, lngStart As Long, lngEnd As Long)
Exemple :
Soit une variable "Phrase" = "Ceci est un test"
La fonction "Mot(Phrase, 2, 4)" vous retournera "est un test".
En fait, lngStart = "Prendre à partir du mot n°" et lngEnd = "Jusqu'au mot n°".
Si vous voulez prendre à partir du 2ème mot jusqu'à la fin de la phrase : "Mot(Phrase, 2, 0)"
Pour les scripteurs mIRC, c'est un peu genre "$1" ; "$2" ; "$1-" etc.

Source

  • Public Function Mot(str As String, lngStart As Long, lngEnd As Long) 'Début de la fonction
  • Dim i, lngMots, x As Long 'Déclaration des variables
  • Dim strMots(1 To 1000) As String 'Déclaration des variables
  • While i <= Len(str) 'Boucle
  • i = i + 1 'Incrémentation de i
  • If Mid(str, i, 1) = Chr(32) Or i = Len(str) Then 'Si Mid(str, i, 1) est égale à un espace ou si i est égale au nombre de caractère de str alors...
  • lngMots = lngMots + 1 'Incrémentation du nombre de mot
  • strMots(lngMots) = Mid(str, 1, i) 'On stocke le mot dans la variable
  • str = Trim(Mid(str, i, Len(str) - i + 1)) 'On enlève de str le mot
  • i = 1
  • End If
  • Wend 'Fin de boucle
  • i = lngStart - 1 'Ici c'est pour sélectionner juste les mots voulus
  • If lngEnd <> 0 Then 'Si lngEnd est différent de 0 alors...
  • While i < lngEnd 'Boucle
  • i = i + 1 'Incrémentation de i
  • Mot = Mot & strMots(i) 'Mot est égale à sa valeur + le mot stocké dans la variable strMots
  • Wend 'Fin de boucle
  • Else
  • While i < lngMots 'Boucle
  • i = i + 1 'Incrémentation de i
  • Mot = Mot & strMots(i) 'Mot est égale à sa valeur + le mot stocké dans la variable strMots
  • Wend 'Fin de boucle
  • End If
  • End Function 'Fin de la fonction
Public Function Mot(str As String, lngStart As Long, lngEnd As Long) 'Début de la fonction
Dim i, lngMots, x As Long 'Déclaration des variables
Dim strMots(1 To 1000) As String 'Déclaration des variables
While i <= Len(str) 'Boucle
i = i + 1 'Incrémentation de i
If Mid(str, i, 1) = Chr(32) Or i = Len(str) Then 'Si Mid(str, i, 1) est égale à un espace ou si i est égale au nombre de caractère de str alors...
lngMots = lngMots + 1 'Incrémentation du nombre de mot
strMots(lngMots) = Mid(str, 1, i) 'On stocke le mot dans la variable
str = Trim(Mid(str, i, Len(str) - i + 1)) 'On enlève de str le mot
i = 1
End If
Wend 'Fin de boucle
i = lngStart - 1 'Ici c'est pour sélectionner juste les mots voulus
If lngEnd <> 0 Then 'Si lngEnd est différent de 0 alors...
While i < lngEnd 'Boucle
i = i + 1 'Incrémentation de i
Mot = Mot & strMots(i) 'Mot est égale à sa valeur + le mot stocké dans la variable strMots
Wend 'Fin de boucle
Else
While i < lngMots 'Boucle
i = i + 1 'Incrémentation de i
Mot = Mot & strMots(i) 'Mot est égale à sa valeur + le mot stocké dans la variable strMots
Wend 'Fin de boucle
End If
End Function 'Fin de la fonction 

 Conclusion

Je suppose qu'il existe une fonction pour ça, mais je ne la connais pas alors, je l'ai faite :) Pas de bug connus pour le moment... Si vous trouvez des erreurs, ou que vous connaissez une fonction déjà faites pour ça, ou pour donner votre avis, etc. laissez un commentaire, merci ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip MP3 BITRATE CALCULATOR
GESTION CHAÎNES DE CARACTÈRES : "TOKEN"

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CRYPTAGE ET DECRYPTAGE par jerichez
Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE MODBUS POUR MODULES ADAM, BECKHOFF, WAGO par mnmsjaune
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CONVERSION UTM VERS LAT/LONG par BarresLTD
Source avec Zip CPROPGROUP : COLLECTION FAITE MAISON par Flocreate

Commentaires et avis

Commentaire de stevebelgium le 11/05/2003 23:47:18

Yo , hexor !

Pas mal ton code mais j'ai fais la meme chose avec la function instr (Instring). Mais quand meme un bon effort.
J'ai ajouter ca aussi :
=&gt; Optional lngEnd As Long = 0 'comme ca on est pas obliger de mettre le parametre

Sorry pour les fautes  d'orthographe . (Je suis encore en train d'apprendre la langue française).

Public Function Mot(str As String, lngStart As Long, Optional lngEnd As Long = 0)

    Dim temp_start, temp_end As Long
    Dim x As Integer
    
    temp_start = 1
    For x = 1 To lngStart - 1
        temp_start = InStr(temp_start + 1, str, " ")
    Next x
    
    temp_end = 1
    For x = 1 To lngEnd
        temp_end = InStr(temp_end + 1, str, " ") + 1
    Next x

    If temp_end - temp_start &gt; 0 Then
        Mot = Mid(str, temp_start, temp_end - temp_start)
    Else
        Mot = Mid(str, temp_start)
    End If
    
End Function

Commentaire de Warny le 12/05/2003 08:41:52

Si vous avez vb 6 vous pouvez auusi utiliser la fonction split et faire ça

Dim Phrase
Dim Ret as String
Dim PosMot as Integer
Phrase = Split(str)
If lngEnd = 0 then lngEnd = ubound(Phrase)
For PosMot = lngStart to lngEnd
    Ret = Ret & Phrase(PosMot) & " "
Next
Mot = Trim(Ret)

Commentaire de stevebelgium le 12/05/2003 09:02:53

Yo , warny !

Cool ta fonction ! Encore plus facile :-) !

Commentaire de HeXoR le 12/05/2003 10:36:29

Hello stevebelgium & Warny, merci pour vos commantaires bien utiles ;)
++

Commentaire de HeXoR le 12/05/2003 10:49:46

Je vais tout de même mettre mon zip (qd j'aurai le temps) permettant de tester la fonction pour ceux qui n'ont pas le courage de le faire eux même :)

Commentaire de stevebelgium le 12/05/2003 11:18:18

Pour dimensioner le variable Phrase dans le code de Warny :

Dim Phrase() As String

=&gt; Ca utilese moins de mémoire que Dim Phrase &lt;= Type Variant

C'es que un détail ;-)

stevebelgium

Commentaire de Warny le 12/05/2003 11:22:13

Warny -&gt; stevebelgium
Ca ne marche pas, la fonction Split renvoi un Array() qui est incompatible avec les tableaux standards du vb.
Si je l'ai ecrit comme ça, c'est pas j'avais envie !

Commentaire de stevebelgium le 12/05/2003 11:27:41

chez moi il le fait =&gt; VB6

sauf lngStart -1 et lngEnd  -1 . Que 1 détail =&gt;

Ca marche pas comme ca ?

Private Sub Command1_Click()
    
    MsgBox Mot("aa bb cc dd ee", 2, 3)
    
End Sub

Public Function Mot(str As String, lngStart As Long, Optional lngEnd As Long = 0)

    Dim Phrase() As String
    Dim Ret As String
    Dim PosMot As Integer
    
    Phrase = Split(str)
    If lngEnd = 0 Then lngEnd = UBound(Phrase)
    For PosMot = lngStart To lngEnd
        Ret = Ret & Phrase(PosMot) & " "
    Next
    Mot = Trim(Ret)
    
End Function

Commentaire de Warny le 12/05/2003 11:35:57

aurais-tu installé un sp au dela du 4 ?

Commentaire de stevebelgium le 12/05/2003 11:51:46

Je ne suis pas sur du SP . je ne pense pas qou j'ai fais un update . Ou est-ce-que je peux retrouver quelle SP est installer ? Quand meme, il le fait chez moi ;-)

Commentaire de dpouliot le 13/05/2003 19:49:17

Un Bugue. Si le texte débute par un blanc (chr(32)) les mots extraits sont décalés. Faire un ltrim avant tout tratiement.

Commentaire de Renfield le 13/05/2003 22:04:46 administrateur CS

et si je separe mes mot par d'avantage d'espaces , ca coince ?? ou les marque de ponctuations ??

"bonjour, martin" , ca fait pas trois mots !!!

Commentaire de Renfield le 13/05/2003 22:33:06 administrateur CS

voici ma version de cette fonction qui suscite tant de polémiques

' Projet &gt; References &gt; Microsoft VbScript Regular Expressions 5.5

Public Function MidMots(Str As String, lngStart As Long, Optional lngEnd As Long = 0, Optional SeparChar As String = " ") As String
    ' Start : mot par lequel on commence (min = 1 )
    ' End : Nombre de mots a recuperer
    ' Separchar : caractere de separation a utiliser en sortie
    
    Dim REG As New RegExp ' objets necessaires au parsing
    Dim Matches As MatchCollection
    
    REG.Global = True ' effectuer des recherches multiples
    'expresion reguliere , non parfaite et certainement perfectionnable , liste les caracteres de separation
    REG.Pattern = "[^ ,.;%:!?+-=/\([)]}{|&&lt;&gt;* ""']+"
    
    'decoupe les mots
    Set Matches = REG.Execute(Str)
    If Matches.Count = 0 Then Exit Function 'sort si aucun mot trouvé
  
   'on coupe tout , pour et on les recolle comme il faut
    For a = lngStart - 1 To IIf(lngEnd = 0, Matches.Count - 1, lngEnd - 1)
        MidMots = IIf(MidMots &lt;&gt; vbNullString, MidMots & SeparChar, vbNullString) & Matches.Item(a)
    Next a
End Function

Commentaire de HeXoR le 29/06/2004 16:18:43

Salut all, bon c'était juste pour dire que j'ai fait un truc bien plus complet et largement plus interessant. A voir : http://www.vbfrance.com/code.aspx?ID=20972
(titre : Gestion de chaîne de caractères - "Tokens")

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,384 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales