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

Thanos_the_yopper 309 Messages postés vendredi 9 janvier 2004Date d'inscription 5 mars 2009 Dernière intervention - 4 août 2004 à 18:13 - Dernière réponse : Thanos_the_yopper 309 Messages postés vendredi 9 janvier 2004Date d'inscription 5 mars 2009 Dernière intervention
- 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 ^^

Afficher la suite 

8 réponses

Meilleure réponse
Thanos_the_yopper 309 Messages postés vendredi 9 janvier 2004Date d'inscription 5 mars 2009 Dernière intervention - 5 août 2004 à 11:39
3
Merci
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 :/

Merci Thanos_the_yopper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

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

Christophe R.
Thanos_the_yopper 309 Messages postés vendredi 9 janvier 2004Date d'inscription 5 mars 2009 Dernière intervention - 4 août 2004 à 18:25
0
Merci
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 :)

cs_rene38 1858 Messages postés samedi 29 juin 2002Date d'inscription 17 octobre 2013 Dernière intervention - 4 août 2004 à 19:34
0
Merci
Bonjour
Quelle fonction utilises-tu pour "trouver" ?
Instr ? ...
cs_rene38 1858 Messages postés samedi 29 juin 2002Date d'inscription 17 octobre 2013 Dernière intervention - 4 août 2004 à 19:54
0
Merci
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))
tmcuh 463 Messages postés dimanche 22 décembre 2002Date d'inscription 18 avril 2009 Dernière intervention - 4 août 2004 à 20:24
0
Merci
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
tmcuh 463 Messages postés dimanche 22 décembre 2002Date d'inscription 18 avril 2009 Dernière intervention - 5 août 2004 à 11:48
0
Merci
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
Thanos_the_yopper 309 Messages postés vendredi 9 janvier 2004Date d'inscription 5 mars 2009 Dernière intervention - 5 août 2004 à 11:52
0
Merci
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 ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.