Comment extraire un mot dans une ligne

Résolu
Tanaka56 Messages postés 124 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 29 janvier 2009 - 7 mai 2006 à 17:19
Tanaka56 Messages postés 124 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 29 janvier 2009 - 8 mai 2006 à 17:39
Bonjour à tous.
En visual Basic6, comment extraire un mot ou une date dans une ligne d'après un fichier HTML.
J'ai téléchargé la page HTML, je la renomme en TXT.
Ensuite, je lis les lignes :
Line Input #numfich, tmp ' On lit la ligne et on la stocke dans la variable

Exemple d'une ligne :
Colis&nbsp;Num&eacute;ro 8N00629048780&nbsp;&agrave;&nbsp;destination&nbsp;de&nbsp;74130 </td>

Comme vous pouvez le voir, il y a au début de la ligne des espaces ou même des caractères parasites.
Je voudrais donc pouvoir extraire le numéro "8N00629048780" ainsi que le code postal "74130".
Merci beaucoup pour vos lumières.
Cordialement

9 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
7 mai 2006 à 18:55
Bonjour ,

MyString = "Colis&nbsp; Num&eacute;ro 8N00629048780 &nbsp;&agrave;&nbsp;destination&nbsp;de&nbsp;74130 </td>"



MyArray1 = Split(MyString, "", -1, 0)
MyArray2 = Split(MyString, "", -1, 0)
MsgBox Right(MyArray1(i), 13) &vbCrLf& Right(MyArray2(i), 5)

jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
8 mai 2006 à 11:56
Re,

Option Explicit
Call Form_Load()
Private Sub Form_Load()
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
' Occurence recherchée
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Const Separateur = ">"
Const Separateur2 = "."
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
' Recherche de chaine de caractères à partir d'une occurence
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Dim iPos, iPos1, sChaine, NewChaine
Const Path = "d:\test"

iPos = ""
iPos1 = ""
sChaine = "<td class=""fondpale"" style=""border-bottom:1px solid"">Colis en instance à La Poste, destinataire avisé disposant de 15 jours pour aller le retirer.&nbsp;&nbsp;</td>"
'MsgBox sChaine
iPos = InStr(1, sChaine, Separateur)



If iPos = 0 Then
Else
NewChaine = Right(sChaine, Len(sChaine) - iPos)


iPos1 = InStr(1, NewChaine, Separateur2)
If iPos1 = 0 Then
Else

MsgBox Left(NewChaine, iPos1 - 1) & "."


' MsgBox "Nom de fichier comprenant le caractère """ & Separateur & """" &vbCrLf&vbCrLf& sChaine &vbCrLf&vbCrLf&vbCrLf&_
' "Résultat pour le 1er """ & Separateur & """" &vbCrLf&vbCrLf&"A gauche : " & Left(sChaine, iPos - 1) &vbCrLf&_
' "A droite : " & Right(sChaine, Len(sChaine) - iPos) &vbCrLf&vbCrLf&_
' "Résultat pour le 2ème """ & Separateur2 & """" &vbCrLf&vbCrLf&"A gauche : " & Left(sChaine, iPos - 1) &vbCrLf&_
' "Au centre : " & Left(NewChaine, iPos1 - 1) & "." &vbCrLf&_
' "A droite : " & Right(NewChaine, Len(NewChaine) - iPos1),_
' vbInformation,"Recherche de l''expression contenue à gauche, au centre et à droite du caractère """ & Separateur & """ "
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
End If
End If
End Sub

jean-marc
3
Tanaka56 Messages postés 124 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 29 janvier 2009
7 mai 2006 à 21:18
Merci pour ces infos, je ne connaisssais pas les syntaxes.
J'ai juste modifié, car un copier-coller ne fonctionnait pas, sans doute (right$) au lieu de (right) et (&vbCrLf&) il n'aime pas non plus.

numero = Right$(MyArray1(i), 13)
codepostal = Right$(MyArray2(i), 5)

Merci encore. Cordialement.
Alain.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
7 mai 2006 à 21:39
Bonsoir,

Mes réponses(bonnes ou erronées) sont toujours en vbs,
mais facilement adaptables aux autres VBx (hormis .Net).
Attention, dans ta demande, on sous-entend que
"8N00629048780" soit toujours de même longueur(13).

jean-marc
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tanaka56 Messages postés 124 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 29 janvier 2009
8 mai 2006 à 10:12
Bonjour.
Effectivement, la longueur du numéro est égale à 13 caractères.
Par contre, j'ai bien noté qu'il faut également doubler les " en mettant "".
Dans mon cas j'avais : class="txtnav3on"
Il faut mettre : class=""txtnav3on""

Cordialement
Alain
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
8 mai 2006 à 10:31
Bonjour,

Oui, je ne l'avais pas précisé, tellement c'est une habitude pour moi.
MyString = "Colis&nbsp;Num&eacute;ro 8N00629048780&nbsp;&agrave;&nbsp;destination&nbsp;de&nbsp;74130 </td>"

idem s'il y a une ', celle-ci devra être protégée (doublée).

Bonne journée et bonne prog.

jean-marc
0
Tanaka56 Messages postés 124 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 29 janvier 2009
8 mai 2006 à 11:33
Re-bonjour,

Je suis toujours sur mon projet de colissimo suivi.
Et là je rencontre une difficulté puisque dans la recherche dans une ligne, je ne connais pas la longueur de la phrase car elle peut être différente.
Si tu as quelques minutes à me consacrer! Voilà les lignes possibles à rencontrer :

<td class="fondpale" style="border-bottom:1px solid">Colis en instance à La Poste, destinataire avisé disposant de 15 jours pour aller le retirer.&nbsp;&nbsp;</td>
ou
<td class="fondpale" style="border-bottom:1px solid">Destinataire absent lors de la première livraison, seconde présentation prévue.&nbsp;&nbsp;</td>
ou même
<td class="fondpale" style="border-bottom:1px solid">Colis livré.&nbsp;&nbsp;</td>
Tu remarqueras qu'il y a toujours devant : <td class="fondpale" style="border-bottom:1px solid">
et derrière : .&nbsp;&nbsp;</td>
Alors ma question est : Y-a-t'il un moyen d'extraire la ligne en question?
(il y a certainement d'autres lignes qu'ils peuvent mettre et que je ne connais pas)
Pour moi, c'est un vrai casse-tête !
J'ai pensé à une solution, c'est de faire une recherche avec might$ par caractère en commencant par le "." qui se trouve à la fin de chaque ligne et en reculant d'un caractère à la fois jusqu'à trouver le caractère ">", mais il doit peut-être avoir plus simple!
Merci de m'apporter une réponse, si tu en a une.
Cordialement.
Alain
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
8 mai 2006 à 13:45
Re-bonjour,

Erreur dans la réponse, comprendre:
MsgBox Left(NewChaine, iPos1)
au lieu de,
MsgBox Left(NewChaine, iPos1 - 1) & "."

jean-marc
0
Tanaka56 Messages postés 124 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 29 janvier 2009
8 mai 2006 à 17:39
Bonsoir,
J'ai passé une bonne partie de l'après midi à faire en sorte que mon petit programme fonctionne.
J'ai pris ta deuxième solution en ce qui concerne la Recherche de chaine de caractères à partir d'une occurence, pour la ville et le code postal, car il y avait un décalage sur le site de la poste.
Maintenant cela fonctionne.
En ce qui concerne les petites boîtes de dialogues, je mets directement un label.
Merci encore pour ton aide, elle m'a été utile.
J'ai encore plein de choses à faire sur ce programme.

Cordialement
Alain
0
Rejoignez-nous