Recherche

Extraire un tableau sur internet vers Excel en utilisant VBA

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".
Extraire un tableau sur internet vers Excel en utilisant VBA


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
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
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 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
        valElmentTxt = Trim(textval.innerText) 
'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