marty14800
Messages postés16Date d'inscriptionjeudi 6 décembre 2007StatutMembreDernière intervention 1 septembre 2010
-
25 janv. 2009 à 19:30
marty14800
Messages postés16Date d'inscriptionjeudi 6 décembre 2007StatutMembreDerniè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.
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 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"
marty14800
Messages postés16Date d'inscriptionjeudi 6 décembre 2007StatutMembreDerniè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
marty14800
Messages postés16Date d'inscriptionjeudi 6 décembre 2007StatutMembreDerniè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