str1 = "<li class=""item"">" str2 = "</li>" s1 = 1 'On boucle tant qu'on trouve des valeurs (S1) While s1 > 0 s1 = InStr(s1, Text16, str1, vbTextCompare) s2 = InStr(s1 + 1, Text16, str2, vbTextCompare) 'Si s1 est égale au s1 précédent.. c'est fini ! If s1 > S1Precedent Then If s1 = 0 Or s2 = 0 Or IsNull(s1) Or IsNull(s2) Then Debug.Print "Aucune correspondance trouvée" Else S1Precedent = s1 s1 = s1 + Len(str1) l = s2 - s1 s2 = s2 + Len(str2) foundstr = Mid(Text16, s1, l) End If 'On place le texte trouvé dans une nouvelle variable pour ne pas ' Modifier celle que l'on utilise pour le traitement... Text17 = Text17 & " " & foundstr End If Wend Debug.Print Text17 End Sub
Dim débRech1 As Long Dim débRech2 As Long Dim s1 As Long Dim s2 As Long Dim Balise1 As String Dim Balise2 As String Dim strpos As long Dim strlen As Long Dim nbFound As Long Dim foundstr() As String Balise1 = "<li class=""item"">" Balise2 = "</li>" Redim founstr(0 to 0) débRech1 = 1 débRech2 = débRech1 + Len(Balise1) On démarre la boucle Do s1 = Instr(débRech1, Text16, Balise1, vbTextCompare) A ce stade si s1 = 0 c'est que la 1ère balise n'esxiste pas, et compte tenu de la supposition no 2, ce n'est pas la peine de rechercher la 2ème balise. If s1 = 0 then En vertu de la supposition no 3, on prend le texte entier nbFound = nbFound + 1 Redim Preserve foundstr(0 to nbFound) foundstr(nbFound) = Text16 La on sort de la boucle Exit Do End if s2 = InStr(débRech2, Text16, Balise2, vbTextCompare) strpos = s1 + Len(Balise1) strlen = s2 - s1 - Len(Balise1) nbFound = nbFound + 1 Redim Preserve foundstr(0 to nbFound) foundstr(nbFound) = Mid$(Text16, strpos, strlen) On déplace le début de la recherche suivante débRech1 = s2 + Len(Balise2) débRech2 = débRech1 + Len(Balise1) On boucle sur la recherche suivante Loop
str1 = "<li class=""item"">" str2 = "</li>" Text1.Text = "" Open "d:essai.html" For Input As #1 strtext = Input(LOF(1), #1) Close #1 Do While strtext Like "*" & str1 & "*" & str2 & "*" pos1 = InStr(strtext, str1) + Len(str1) + 2 pos2 = InStr(strtext, str2) pos3 = pos2 + Len(str2) Text1.SelText = Mid(strtext, pos1, pos2 - pos1 - 2) & vbCrLf strtext = Mid(strtext, pos3 + 2) Loop
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
18 sept. 2013 à 21:45