Recherche dans fichier

marty14800 Messages postés 16 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 1 septembre 2010 - 25 janv. 2009 à 19:30
marty14800 Messages postés 16 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 1 septembre 2010 - 27 janv. 2009 à 16:24
Bonsoir,

A l'aide d'un control textbox j'affiche le contenus d'un document et j'utilise la fonction instr pour y effectuer une recherche, cependant je dois y faire une recherche plus précise mais je ne sait comment m'y prendre.
Dans ce document
1 - Je doit trouver dans ce control textbox le mot 'BONJOURS' puis verifier si dans les 30 caracteres qui suivent ce mot, le chiffre '12' . Donc si    'BONJOURS' + '12' = BEEP

La distance entre bonjours et le chiffre 12 est trés important

Enfin pas évident et merci d'avance pour votre aide.

4 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
25 janv. 2009 à 19:51
Bonjour,
Bien !
1) Tu sais donc utiliser Instr pour trouver la position pos du "B" de "BONJOURS"
2) tu connais donc la position pos1 commençant au caractère suivant (pos1 = pos + la longueur de "BONJOURS")  - Vois Len dans ton aide en ligne
3) tu peux donc déterminer la chaine machaine qui commence au caractère de position pos1 et comprend 30 caractères
Vois Mid dans ton aide en ligne. Mid te permet d'extraire d'une chaine les x (pour toi 30) caractères à partir de la position pos1
4) maintenbant que tu as une chaîne machaine, il ne te reste plus qu'à déterminer à nouveau par Instr (mais çà, tu sais déjà faire) si machaine contient "12"


A toi de jouer (super fastoche) ...
0
marty14800 Messages postés 16 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 1 septembre 2010
26 janv. 2009 à 19:23
Merci de ton aide, donc j'ai trouver une procedure pour effectuer ma recherche comme ceci :
textbox.text = affiche le contenu text

Dim A
Dim sStr As String
Reponse.Text = MyMid(RE.Text, "BONJOURS", "12")
If InStr(Reponse.Text, "MOT A CHERCHER") > 1 Then
Beep 'avertissement envois mail
End If

Comment puis je effectuer une boucle car dans mon control textbox.text la chaines 'BONJOURS' et '12' peuvent apparaitre plusieurs fois, est il possible aussi d'effacer dans le textbox.text les chaines analysée  au fur et a mesure de la recherche ?
Par avance merci
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
26 janv. 2009 à 20:13
Je ne connais pas la fonction MyMid !


Elle est de toi ? On n'en voit pas le code ....


Rien de celà ne me parait très sérieux, exposé ainsi !
0
marty14800 Messages postés 16 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 1 septembre 2010
27 janv. 2009 à 16:24
Non cette fonction n'est pas de moi, voila le code qui fonctionne a merveille pour moi .Maintenant sachant que 'BONJOUR' et '12' peuvent apparaitre plusieur fois dans mon CONTROL TEXT j'aimerais savoir comment faire avec ce code  pour effacer la partie qui as été analysé et  continuer a chercher la présence de bonjours et 12 et si ses deux mot n'existe plus dans le control text  passer a une autre recherche : !


Reponse.Text = MyMid(RE.Text, "BONJOURS", "12")
If InStr(Reponse.Text, "MOT A CHERCHER") > 1 Then
Beep 'avertissement par mail votre text a été trouvé'
End If


Par avance merci de ton aide :

Private Function MyMid(ByRef Expression As String, sLeft As String, sRight As String, Optional Start As Long = 1) As String
    Dim lPosL As Long, lPosR As Long    lPosL InStr(Start, Expression, sLeft): lPosR InStr(lPosL + 1, Expression, sRight)
    If lPosL > 0 And lPosR > 0 Then
        MyMid = Mid$(Expression, lPosL + Len(sLeft), lPosR - lPosL - Len(sLeft))
    Else
        MyMid = vbNullString
    End If
End Function
0