Le
code développé dans ce qui suit permet d’extraire un tableau existant sur internet
vers un tableur Excel et ce à travers un code VBA.
Nous
allons présenter dans ce qui suit un code simple, pour le cas d’un tableau
existant dans une seule page internet et ce pour des raisons pédagogique.
Toutefois,
des améliorations peuvent être apportées pour et ce selon la structure des
données sur internet.
uPréparation de l’environnement VBA
Dans
la partie VBA, accéder à Outils+Référence et activer "Microsoft HTML
Object Library" et "Microsoft Internet Controls" et ce pour faciliter la saisie du code VBA et
obtenir les propositions lors de la saisie du code en appuyant sur
"Ctrl+Espace".
uAstuce : Utilité du code
Source du site web
L’astuce
consiste à accéder au code source du site à partir duquel nous voulons extraire
les données spécifiées. En effet, pour déterminer la balise à partir de
laquelle nous allons extraire les données, il y a lieu de sélectionner une
ligne du tableau et click sur bouton droite et choisir "Inspecter".
Une
fois, nous avons déterminé la lettre de la balise par exemple "td", nous utilisé la
fonction getElementsByTagName("td")
uPrécaution d’extraction
Il
y a lieu d’utiliser la commande " Loop
Until IE.ReadyState" pour ne pas commencer l’extraction des données
qu’après le chargement total de la page et ce à travers la commande :
Loop
Until IE.ReadyState = READYSTATE_COMPLETE
uCode d’extraction
Sub charger_TabWeb()
Dim IE As New InternetExplorer
Dim i, j As Long
Dim doc As HTMLDocument
Dim textval
Dim valElmentTxt As String
i = 1 'i et j représente les lignes et les colones du tableau excel a remplir
j = 2
'mettre l'adresse des tableau à charger dans des cellule Excel
adrss_site = "http://connaissance-de-base.blogspot.com/2011/12/codes-des-devises.html"
IE.Navigate adrss_site
IE.Visible = True
'boucle pour ne pas commencé le chargement des données que lorsque la page soit completement chargée
'boucle pour ne pas commencé le chargement des données que lorsque la page soit completement chargée
Do
DoEvents
Loop Until IE.ReadyState = READYSTATE_COMPLETE
Set doc = IE.document
Set tableau = doc.getElementsByTagName("td")
'la variable tableau pour stocké tous les élements ayant pour balise Td
'la variable tableau pour stocké tous les élements ayant pour balise Td
For Each textval In tableau
If InStr(textval.innerText, "Unusual Traffic Activity") = 0 Then
'Test pour éviter les bloccages des sécurité des sites internet
'Test pour éviter les bloccages des sécurité des sites internet
'Test pour éviter le téléchargement des pages publicitaires
If InStr(textval.innerText, "ad =") = 0 And InStr(textval.innerText, "cell is row") = 0 Then
If i >= 4 Then
'Condition pour structurer le tableau comme son apparence dans le site internet
'Condition pour structurer le tableau comme son apparence dans le site internet
valElmentTxt = Trim(textval.innerText)
'ValElmentTxt stoque la valeur de chaque cellule du tableau
'ValElmentTxt stoque la valeur de chaque cellule du tableau
Workbooks("donneeblogspot.xlsm").Sheets("feuil5").Cells(j, i).Value = valElmentTxt
j = j + 1
i = 1
Else
valElmentTxt = Trim(textval.innerText)
Workbooks("donneeblogspot.xlsm").Sheets("feuil5").Cells(j, i).Value = valElmentTxt
i = i + 1
End If
End If
Else
MsgBox "vérifier code du site"
End If
Next
End Sub
PAR Taoufik Aouiti
Auteur: N’hésitez pas à me signaler les
erreurs qui peuvent glisser dans cet article afin de les corriger.
Aucun commentaire :
Enregistrer un commentaire