Trouver un caractère "spécial" dans une chaine (genre é ou à)

Résolu
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009 - 4 août 2004 à 18:13
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009 - 5 août 2004 à 11:52
voila mon probleme :
Je lis dans un fichier XML un texte et je dois mettre d'une autre couleur un certain mots (dans le cas d'un moteur de recherche)
Genre, si je fais une recherche sur "légume", je dois avoir ça avoir légume en rouge dans le texte "les légumes, c'est bon". Bon, ça, pas de souci, je sais le faire.
Maintenant, si la recherche se fait sur "legume", je dois aussi mettre légume en rouge ... et là, je bloque déjà plus :/
est-ce que quelqu'un aurait une idée de génie pour me sortir de ce mauvais pas ? (je précise que je suis en VB6)
merci d'avance ^^

8 réponses

Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009
5 août 2004 à 11:39
aya, merci bien, ça m'a trop bien aidé !! :D

voila ce que ça donne au final :

Const accent = "äâàéèêëùûüôöç"
Const normal = "aaaeeeeuuuooc"

Public Function rechercheCaracSpeciaux(ByVal TextRecherche As String, ByVal MotRecherche As String) As String

Dim i As Long, pos As Long, pos2 As Long
Dim j As Long
Dim mot As String 'contient chaque mot de la phrase
Dim newmot As String 'contient le mot sans accens (temporaire)
Dim newrech As String 'contient le mot de recherche
Dim valRet As String 'contient ce qui sera retourné en fin

For i = 1 To Len(TextRecherche)
    pos = InStr(i, TextRecherche, " ", vbTextCompare) 'donne la position de l'espace    If pos 0 Then: pos Len(TextRecherche) + 1 'si à la fin
    mot = Mid(TextRecherche, i, pos - i) 'selectionne le mot
    i = i + Len(mot) 'attribue la nouvelle valeur de comptage (rapidité)
    newmot = ""
    newrech = ""
    For j = 1 To Len(mot) 'pour le mot de la phrase
        pos2 = InStr(1, accent, Mid(mot, j, 1), vbTextCompare)
        If pos2 <> 0 Then
            newmot = newmot & Mid(normal, pos2, 1)
        Else
            newmot = newmot & Mid(mot, j, 1)
        End If
    Next j
    For j = 1 To Len(MotRecherche) 'pour la recherche
        pos2 = InStr(1, accent, Mid(MotRecherche, j, 1), vbTextCompare)
        If pos2 <> 0 Then
            newrech = newrech & Mid(normal, pos2, 1)
        Else
            newrech = newrech & Mid(MotRecherche, j, 1)
        End If
    Next j
    pos2 = InStr(1, newmot, newrech, vbTextCompare)
    If pos2 <> 0 Then 'si identique
        valRet = valRet & "" & Mid(TextRecherche, pos - Len(mot), Len(newrech)) & "" & Mid(TextRecherche, pos - Len(mot) + Len(newrech), Len(mot) - Len(newrech)) & " "
    Else
        valRet = valRet & Mid(TextRecherche, pos - Len(mot), Len(mot)) & " "
    End If
Next i

rechercheCaracSpeciaux = Trim(valRet)

End Function


alors après, mon probleme c'est que le site que je fais est en 14 langue et que dans certaines langue, y'a des caratectere bizzare genre ž ou ę ... et la, ben c'est deja plus chaud parce qu'on peut pas écrire ce genre de lettre dans VB :/

3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
4 août 2004 à 18:22
Fait des replace des é, è, ê, ë, etc ... par des e, etc ...

Christophe R.
0
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009
4 août 2004 à 18:25
ben je peux pas, parce que si le texte de recherche est "legume" par exemple, dans le texte à afficher, je dois mettre "légume" en rouge, en laissant le "é" tel qu'il est ...

genre, je cherche "legume", ça me donne :
"les légumes, c'est bon"
Si je remplace, je perds le "é" ... sinon, effectivement, ça aurait été plus simple :)

0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
4 août 2004 à 19:34
Bonjour
Quelle fonction utilises-tu pour "trouver" ?
Instr ? ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
4 août 2004 à 19:54
Suggestion :
Une fonction SansAcc qui remplace les "caractères accentués" par des "caracteres non accentues"
Une fonction Trouver(Recherché, LeTout) qui cherche Recherché dans LeTout
Et pour chercher "légume" ou "legume" dans Texte,
Trouver(SansAcc("légume"), SansAcc(Texte))
0
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
4 août 2004 à 20:24
Option Explicit

Const accent = "äâàéèêëùûüôö"
Const normal = "aaaeeeeuuuoo"

Private Sub Command1_Click()
Dim i As Long, pos As Long
Dim j As Long
Dim mot As String 'contient chaque mot de la phrase
Dim newmot As String 'contient le mot sans accens (temporaire)
Dim newrech As String 'contient le mot de recherche
For i = 1 To Len(Text1)
pos = InStr(i, Text1, " ", vbTextCompare) 'donne la position de l'espace If pos 0 Then: pos Len(Text1) + 1 'si à la fin
mot = Mid(Text1, i, pos - i) 'selectionne le mot
i = i + Len(mot) 'attribue la nouvelle valeur de comptage (rapidité)
pos = 0
newmot = ""
newrech = ""
For j = 1 To Len(mot) 'pour le mot de la phrase
If InStr(1, mot, Mid(accent, j, 1), vbTextCompare) <> 0 Then
newmot = newmot & Mid(normal, j, 1)
Else
newmot = newmot & Mid(mot, j, 1)
End If
Next j
For j = 1 To Len(Text2) 'pour la recherche
If InStr(1, Text2, Mid(accent, j, 1), vbTextCompare) <> 0 Then
newrech = newrech & Mid(normal, j, 1)
Else
newrech = newrech & Mid(Text2, j, 1)
End If
Next j
pos = InStr(1, newmot, newrech, vbTextCompare)
If pos <> 0 Then 'si identique
'sélectionne le mot
MsgBox ("trouvé")
End If
Next i
End Sub

**********************************
cà devrait t'aider il est pas encore au point y'a une erreur au niveau : If InStr(1, mot, Mid(accent, j, 1), vbTextCompare) <> 0 Then ... à toi de résoudre g fait le plus gros loOol

Amicalement TMCUH
0
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
5 août 2004 à 11:48
et pq pas, tu les as bien écrit ici, le vb utilise tout comme l'html le code ascii, mais aussi l'unicode, recherche il y a des sources ici qui prennent en compte ce type de caractère ;-)

Amicalement TMCUH
0
Thanos_the_yopper Messages postés 309 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 5 mars 2009
5 août 2004 à 11:52
en fait, si je fais un copier/coller de ę par exemple pour le rajouter à Const accent = "äâàéèêëùûüôöç", quand je le colle dans VB, ça me colle un e tout con :/

enfin, je vais chercher si je trouve pas un moyen de faire un remplacement de ę ... vais faire le tour des sources :) merci du conseil ^^

0
Rejoignez-nous