Comment extraire un mot dans une ligne

[Résolu]
Signaler
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009
-
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009
-
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

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009

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.
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009

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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
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
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009

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
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
Re-bonjour,

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

jean-marc
Messages postés
124
Date d'inscription
samedi 8 avril 2006
Statut
Membre
Dernière intervention
29 janvier 2009

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