Recherche dans fichier

Signaler
Messages postés
16
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
1 septembre 2010
-
Messages postés
16
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
1 septembre 2010
-
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

Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
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) ...
Messages postés
16
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
1 septembre 2010

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
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
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 !
Messages postés
16
Date d'inscription
jeudi 6 décembre 2007
Statut
Membre
Dernière intervention
1 septembre 2010

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