cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 2013
-
1 août 2005 à 12:51
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 2013
-
2 août 2005 à 12:41
Salut à tous
Comment faire pour que les phrases suivantes soient reconnues et la dernière exclue:
1) tu vois ?
2) tu vois clair ?
3) tu vois bien clair ?
Je fais un modèle avec Like:
resultat1= phrase1 like "tu vois" & " " & "[?]"
resultat2= phrase2 like "tu vois" & " " & "*" & " " & "[?]"
Le premier modèle doit reconnaitre les phrases avec "tu vois" un espace et un ?; comme la phrase 1, c'est OK.
Le deuxième modéle doit reconnaitre les phrases avec "tu vois", un espace, un SEUL mot, un espace, et un ?, comme la phrase 2
Or, ce modèle reconnait aussi la phrase 3.
J'ai remplacé la séquence " " & "*" & " " & "[?]" par:
" * ?" = KO
" " & "! " & " " & "[?]" = KO
et d'autres variantes, masi rien ne marche.
Quelqu'un aurait une idée ? merci
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 août 2005 à 19:37
salut,
bon, on va supposer VB6....
qu'est-ce que tu penses de çà :
Dim DebutFixe as String, FinFixe as String
Dim Test as String, Pos as Integer
DebutFixe "tu vois ": FinFixe " ?"
resultat2= phrase2 like DebutFixe & "*" & FinFixe
Test = Replace(phrase2, DebutFixe, "")
Test = Replace(Test, FinFixe, "")
Pos = Instr(Test, " ")
if Pos <> 0 Then MsgBox "Il y a plus d'un mot trouvé", 32, "Invalide"
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 1 août 2005 à 14:36
Merci de ta réposne, mais je dois absolument garder le modèle tel quel, et en plus ce n'est pas le mot "bien" qui compte, mais n'importe quel mot: en fait je dois repérer les phrases avec un seul mot en plus que "tu vois".
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 1 août 2005 à 16:49
les espaces sont dans le modèle puisque pour un mot il y a deux espaces:
" " & "*" & " "
en fait le "*" marche comme s'il était seul, alors que je demande tout caractère entouré de deux blancs une seule fois.
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 2 août 2005 à 09:10
Merci pour vos réponses, je vais tester ça.
En fait, le modèle que je proposais ici marche tout à fait bien quand on découpe au préalable avec SPLIT, en prenant la ponctuation comme séparateur. Malheureusement, dans mon cas, la fonction split , qui traitait l'énoncé comme un tout, amenait des difficultés de traitement (notemment, le séparateur est rejeté du tableau) et donc j'ai dû traiter caractère par caractère pour repèrer la ponctuation; et c'est depuis que ce modèle ne marche plus.
Split(phrase, "?")
modèle " " & "*" & " " OK
For h = 1 to Len (phrase(I))
c= Mid$(phrase(I), h, 1)
if c = "?" then
h = h +1
phrase= Mid$(Lcase(phrase(I), j, h-j)
modèle KO
etc
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 2 août 2005 à 12:10
Désolé pour la mise en page, il n'y a pas de règles sous mac, je passe alors par mon PC.
Merci pcpt ta solution marche parfaitement si on a toujours bien un espace entre deux mots (sinon, on doit faire un replace(phrase2, " ", " ") par ex.)
CanisLupus, je comprends ta solution mais elle est longue à mettre en oeuvre dans mon cas, car les mots à vérifier doivent d'abord être présent dans une base de données et dans un certain ordre avant de vérifier s'il n'y a qu'un mot en plus.Sinon, j'aurais pu faire:
resultat() = Split(phrase, " ")
For f = 0 To UBound(resultat)
res1 = InStr(resultat(4), "")
If res = 1 Then MsgBox "ok"
Next f
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 2 août 2005 à 12:27
en effet, mais ce n'est d'ailleurs pa le seul test :
*pas de majuscule "Tu vois"
*espace avant le "?"
et sans doute d'autres, genre pas d'espace après une apostrophe..
tu peux d'ailleurs raccourcir mon instruction :
Test = Replace(Replace(resultat2, DebutFixe, ""), FinFixe, "")
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 2 août 2005 à 12:41
J'ai déjà intégré ce genre de problèmes de style dans le programme car ca gêne souvent la comparaison avec des bases de données, donc dans mon cas, ta solution est bien la meilleure mais si quelqu'un d'autre souhaite l'utiliser il devrait penser à tout ça.
Ceci dit, à la réflexion la solution de CanisLupus est j'uilise les conditions existantes. Je continue à tester et merci à tous les deux encore.