Validation de texte et recherche de mot dans une chaine de caractère
Groovygirl
Messages postés7Date d'inscriptionmercredi 29 octobre 2003StatutMembreDernière intervention23 mai 2007
-
21 janv. 2006 à 20:00
SkyRocKo
Messages postés174Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention18 février 2006
-
22 janv. 2006 à 17:38
Bonjour, voici mon problème
je dois saisir du texte dans un textbox, mais je dois vérifier que certain mot ne se trouve pas dans la chaine de caractère. Si les mot interdits sont dans le textbox, je dois avertir l'utilisateur que ces mot ne sont pas permis et il doit recommencer.
Pouvez-vous m'aider svp!!
Groovygirl
A voir également:
Validation de texte et recherche de mot dans une chaine de caractère
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 janv. 2006 à 23:47
Salut
Non, il faut tester que le mot interdit ne soit pas dans la chaine.
Je suppose que dans la textebox on peut avoir plusieurs mots ET qu'il y a plusieurs mots interdits.
Donc, il faut compléter tout ça :
-1- Mettre les mots interdits dans un tableau
-2- Rechercher chacun des mots dans la TextBox
For r = 0 To UBound(Tableau)
If UCase(TextBox.Text) Like ("*" & UCase(Tableau(r)) & "*") Then
' MOt interdit trouvé ... blablabla
Exit For
End If
Next r
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 janv. 2006 à 23:49
NB : Il faudra penser à chercher aussi les mots interdits en remplaçant les accents des mots par de simples lettres non accentuées pour que ce soit vramient efficace.
SkyRocKo
Messages postés174Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention18 février 2006 22 janv. 2006 à 17:38
Salut Groovygirl,
Je t'ai concocté un code qui fonctionne impec Tu n'as qu'à créer un TextBox nommé 'Text1" et copier-coller le code ci-dessous :
'''DANS UNE FORM
Const sKeyWords As String = "Hot;doG;snooPy;SkyRocKo" ' Liste des mots clé
Const sSeparate = ";"
Dim KeyWord(25) As String ' Le fameux tableau
Dim bForbidden As Boolean ' Saisie correcte ??
Private Sub Text1_Change()
Dim Count As Byte
'On met les mots clé dans un tableau
Call StrDecompose(sKeyWords, KeyWord(), sSeparate, , , , Count)
'On vérifie si la saisie est correcte
bForbidden = IsForbidden(Text1.Text, KeyWord(), Count)
'Ici tu places l'action à effectuer...
If bForbidden Then MsgBox "Valeur interdite !", vbCritical, "ERROR !!!"
End Sub
''''DANS UN MODULEPublic Function IsForbidden(ByVal sText As String, ByRef sValue() As String, ByVal Count, Optional ByVal StartIndex 0, Optional ByVal Compare As VbCompareMethod vbTextCompare) As Boolean
Dim a
For a = StartIndex To (Count - 1)
If InStr(1, sText, sValue(a), Compare) > 0 Then
IsForbidden = True
Exit For
End If
Next a
End Function
Public Sub StrDecompose(ByVal strSource As String, ByRef strDest() As String, Optional ByVal strSeparate As String ";", Optional ByVal Compare As VbCompareMethod vbTextCompare, Optional ByVal Start = 1, Optional ByVal StartIndex = 0, Optional ByRef Count)
Dim a, Pos
strSource = Mid$(strSource, Start)
'Nombre d'itérations
Count = Len(strSource) - Len(Replace$(strSource, strSeparate, "", , , Compare)) + IIf(Len(sKeyWords) >= 1, 1, 0)
'Continue?
If Count <= 1 Then
strDest(StartIndex) = strSource
Exit Sub
End If
'Remplie le tableau
If Right$(strSource, Len(strSeparate)) <> strSeparate Then strSource = strSource & strSeparate
For a = 1 To Len(strSource) Pos InStr(a, strSource, strSeparate): If Pos 0 Then Exit For
strDest(StartIndex) = Mid$(strSource, a, Pos - a)
StartIndex = StartIndex + 1
a = Pos
Next
End Sub