Validation de texte et recherche de mot dans une chaine de caractère

Groovygirl Messages postés 7 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 23 mai 2007 - 21 janv. 2006 à 20:00
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 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

4 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
21 janv. 2006 à 22:57
Bonsoir,

Voici un exemple.



Private Sub Text1_Change()

If Text1.Text = "Mais" Then

MsgBox "Ce mot est interdit ! recommencez.", vbCritical, "Mots interdits"

Text1.Text = ""

Text1.SetFocus

End If

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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.
0
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 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

Si tu as des questions, n'hésites pas

SkyRocKo
0
Rejoignez-nous