Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Récupérer le code HTML d'une page web multi-frame à partir d'Excel

  • Initiateur de la discussion Initiateur de la discussion bayeuxenbessin
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

bayeuxenbessin

Guest
Bonjour,

J'ai demandé il y a quelques mois s'il était possible de récupérer le contenu HTML d'une page web à partir d'excel.

A partir du code qui m'avait aimablement été fourni par MichelXLD j'avais écrit celui ci :

Sub RecuperationFichierHTML()
'****************************
'* Récupère le fichier HTML *
'* d'une page sur Internet *
'****************************
'Création des fichiers texte
For NumLigneAdresse = 2 To NombredeLigneAdresse

'Récupération des adresses
'AdresseEnCours = Cells(NumLigneAdresse, ColonneAdresseAdresse).Value
AdresseEnCours = "http://www.orange.fr"

Dim Http As Object
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.Open "GET", AdresseEnCours, False
Http.Send
Call BinaryToString(Http.ResponseBody, AdresseEnCours)
Set Http = Nothing
Next NumLigneAdresse

'Positionnement sur la feuille Menu
'Sheets("Menu").Select
End Sub
Function BinaryToString(Binary, AdresseEnCours, Optional CharSet = "")

'Déclaration des variables
Dim BinaryStream As Object

Set BinaryStream = CreateObject("ADODB.Stream")
NomDuFichier = "Recuperation.txt"

Chemin = ActiveWorkbook.Path
AnneeEnCours = Trim(Str(Year(Date)))
MoisEnCours = Trim(Str(Month(Date)))
LongueurMoisEnCours = Len(MoisEnCours)
If LongueurMoisEnCours = 1 Then
MoisEnCours = "0" & MoisEnCours
End If 'LongueurMoisEnCours = 1
JourEnCours = Trim(Str(Day(Date)))
HoraireEnCours = Str(Time)
HeureEnCours = Left(HoraireEnCours, 2)
MinuteEnCours = Mid(HoraireEnCours, 4, 2)
SecondeEnCours = Right(HoraireEnCours, 2)
NomDuFichier = Chemin & "\" & AnneeEnCours & MoisEnCours & JourEnCours & HeureEnCours & MinuteEnCours & SecondeEnCours & " Récuperation.txt"
'Récupération des données HTML
With BinaryStream
.Type = 1 ' (Type Binary)
.Open
.Write Binary
.Position = 0
.Type = 2 ' (Type Text)
.CharSet = "us-ascii"
' Specify charset For the source text (unicode) data.
If Len(CharSet) Then .CharSet = CharSet
BinaryToString = .ReadText
.WriteText BinaryToString
'.SaveToFile FileName, 2
.SaveToFile NomDuFichier, 2
'***********************
VariableTest = .ReadText
'***********************
End With
Set BinaryStream = Nothing
End Function

Ce code fonctionne parfaitement si la page ne possède pas de frame mais renvoi le contenu du premier frame s'il y en a plusieurs.

Quelqu'un saurait-il me dire ce qui devrait être rajouter et à quel endroit pour pointer sur le frame qui m'interesse (qui n'est pas forcement le premier).

En recherchant dans ce forum j'ai vu qu'une fonction inner(0) - avec 0 => N° du frame permettrait de résoudre ce problème mais je n'arrive pas à placer correctement ce paramètres sur le code que je possède déjà.

Si quelqu'un a une idée pour résoudre ce problème ?
 
Dernière modification par un modérateur:
Re : Récupérer le code HTML d'une page web multi-frame à partir d'Excel

Bonjour,

Une autre solution pour récupérer le code HTML d'une page internet est celle-ci : (on remercie une fois de plus Michel)

Code:
Private Sub commandButton3_Click()
    'michelxld le 10.01.2005
    'nécéssite d'activer la référence Microsoft HTML Objects Library
    'nécéssite d'activer la référence Microsoft Internet Controls
    
    Dim IE As InternetExplorer
    Dim maPageHtml As HTMLDocument
    
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate ("www.exalead.fr")
        Do Until IE.readyState = READYSTATE_COMPLETE
        DoEvents
        Loop 'attend la fin du chargement pour continuer la procedure
    
    Set maPageHtml = IE.document
end sub

Tu peux adapter ce code pour récupérer les frames qui t'intéressent en ajoutant par exemple

Code:
Dim Helem As IHTMLElementCollection

(...)

Set Helem = maPageHtml.frames.Item(0).document

En faisant itérer le Item(0) jusqu'à tomber sur la frame qui t'intéresse.

Désolé, je ne suis pas assez connaisseur pour réussir à adapter ton code pour utiliser l'objet frames.


Bon courage,

--
Max
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…