Html

  • Initiateur de la discussion Snake
  • Date de début
S

Snake

Guest
Bonjour à tous,

J'ai un petit problème, j'aimerai faire une macro qui copie une patie du code html d'une page internet pour la coller dans une cellule de ma fauille excel.
L'extrait de code commence par <TD id=abCell vAlign=top> et se termine par </TD>.

Merci d'avance pour vos idées
:)
 

chris

XLDnaute Barbatruc
Bonjour
C'est presque hors sujet ...
<TD>introduitt le contenu d'une cellule et </TD>indique sa fin.
Le contenu est donc entre ces 2 balises.
Si la seule cellule à récupérer est celle-ci est que nulle part ailleurs dans le code de la page n'est répété l'ID abcell tu du dois pouvoir la repérer.
Dans l'ancien Forum il doit y avoir des exemples de code pour lire un fichier texte avec input (l'HTML n'est que du texte balisé mais pas un format binaire particulier).
 

MichelXld

XLDnaute Barbatruc
bonsoir Snake , bonsoir Chris

S'il s'agit de recuperer des infos dans une page Web , il est aussi possible de boucler sur les input depuis Excel en activant les références :
Microsoft HTML Objects Library et Microsoft Internet Controls


Code:
Sub piloterPageWeb()
'activer la refernce Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls
Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Set IE = CreateObject('InternetExplorer.Application')
IE.Visible = True

IE.navigate '[B]Lien supprimé[/B]
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName('input')

For i = 0 To Helem.Length - 1
MsgBox i & Helem(i).getAttribute('name') & ' / ' & Helem(i).getAttribute('value')
Next i

End Sub



bonne soiree
MichelXld
 
S

Snake

Guest
Tout d'abord merci pour vos réponses...

Michel ta macro semble interessante mais vba ne reconnait pas les types de variables suivants:


Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Donc elle ne fonctionne pas ;)

Si vous pouvez m'aider merci

++
 

MichelXld

XLDnaute Barbatruc
bonjour Snake

tu n'as pas bien lu les indications dans mon premier message :

'activer la refernce Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls


dans l'editeur de macros
Menu Outils
References
coches les lignes 'Microsoft HTML Objects Library' et 'Microsoft Internet Controls'
cliques sur OK pour valider


bonne journée
MichelXld
 
S

Snake

Guest
Merci bcp
Ca marche beaucoup mieux mais quand je la lance elle ouvre la page qui va bien puis elle plante sur la ligne de code
Set maPageHtml = IE.document
avec le message d'erreur suivant:
Erreur d'exécution '-2147467259(80004005)':
erreur automation
erreur non spécifiée


Ca te dis quelque chose?

++
 

MichelXld

XLDnaute Barbatruc
bonsoir Snake

je n'ai pas de réponse à ton message d'erreur

apres quelques essais , la seule façon dont j'ai réussi à reproduire le message d'erreur est en enlevant les lignes

Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

qui servent à attendre le chargement complet de la page pour continuer la procedure

dans le doute tu pourrais faire un test en ajoutant à la suite , cette ligne ( pour temporiser la macro pendant 2 secondes )

Application.Wait (Now + TimeValue('0:00:02'))


ce qui donnerait

...
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Application.Wait (Now + TimeValue('0:00:02'))
...



tu as fais le test avec le lien fourni dans l'exemple ou avec le nom de ton site internet ?


bonne soiree
MichelXld

Message édité par: MichelXld, à: 06/04/2005 19:35
 

dg62

XLDnaute Barbatruc
Bonsoir Snake
(répondu dans fil précédent)


Une solution toute simple


Tu copies ton fichier texte sur une feuille excel

Chaque ligne de ton fichier devrait se retrouver sur une colonne et X lignes

Tu fais ensuite remplacer par

Chaîne d'origine : <TD id=abCell vAlign=top>

Remplacer par :

la même chose pour :</TD>

et ça marche


la question de ton 1er fil n'est pas tout à fait identique. j'avais compris que tu avais un fichier texte de X lignes et sur lequel tu souhaitais récupérer le texte compris entre les deux balises.

Message édité par: DG62, à: 07/04/2005 08:35
 
S

Snake

Guest
Merci beaucoup en effet des lignes avaient sautées lors du copier coller ( :eek: ) maintenant l'erreur ne se produit plus à ce niveau
Elle se produit lorsque j'essaie de rapatrier la valeur dans la cellule.

Si tu veux je peux t'envoyer une copie de ton code que j'ai adapté à mon cas si ca peux t'aider...


Dg62 merci pour ta méthode elle marche mais je dois faire cette manip un grand nombre de fois donc j'aimerais quelque chose de plus 'automatique'... (ah ces jeunes tjrs aussi fainéants
:) )

++
 
S

Snake

Guest
Bonjour Michel,

ui le voici
'activer la refernce Microsoft HTML Objects Library
'activer la reference Microsoft Internet Controls
Dim i As Integer
Dim j As Integer
Dim pubnumber As String
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection



For j = 3 To 5000
If ThisWorkbook.Sheets('Base_div').Range('p' & j).Value = 'None' Then

If ThisWorkbook.Worksheets('Base_div').Range('i' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('i' & i).Value
GoTo suite
End If
If ThisWorkbook.Worksheets('Base_div').Range('j' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('j' & j).Value
GoTo suite
End If
If ThisWorkbook.Worksheets('Base_div').Range('k' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('k' & j).Value
GoTo suite
End If
If ThisWorkbook.Worksheets('Base_div').Range('l' & j).Value <> '' Then
pubnumber = ThisWorkbook.Worksheets('Base_div').Range('l' & j).Value
GoTo suite
End If

suite:
Set IE = CreateObject('InternetExplorer.Application')
IE.Visible = True


IE.navigate ' & pubnumber & '&F=0'
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop


Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName('abCell')

For i = 0 To Helem.Length - 1
MsgBox i & Helem(i).getAttribute('name') & ' / ' & Helem(i).getAttribute('value')
Next i
ThisWorkbook.Worksheets('Base_div').Range('p' & j).Value = Helem 'ca plante ici
End If
Next

End Sub

Si vous pouvez m'aider... Merci
 

Discussions similaires

Statistiques des forums

Discussions
313 043
Messages
2 094 715
Membres
106 075
dernier inscrit
ronagaya