Bonjour à tous,
J'ai une procédure en VBA qui me permet de récupérer le contenu d'une page Web (I.E) dans un fichier Excel.
Voici la procédure:
Cette procédure est appelée 50 fois environ dans un programme, car je récupère 50 données d'une page qui varie selon un paramètre. Sauf qu'au bout d'un moment, j'ai un message d'erreur sur la ligne "Set inet = CreateObject("InternetExplorer.Application")" en me disant "mémoire insuffisante". Je ne vois pas trop pourquoi alors que le programme a pu charger correctement les premières pages, il s'arrête à un moment. Est-ce qu'il manque un code à la fin pour fermer la page IE qu'on a ouverte? .. je sais pas trop
Merci de votre aide!
J'ai une procédure en VBA qui me permet de récupérer le contenu d'une page Web (I.E) dans un fichier Excel.
Voici la procédure:
VB:
Public Sub lecture_page(lien_adresse As String)
'fonction prenant en paramètre un lien internet
Const genericFIC = "temp.xls" 'Nom du fichier Excel temporaire
Dim fso, fil, inet
Dim IE As InternetExplorer
Dim boucle_lignes_fichier_temp As Integer
Dim valtxt As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set inet = CreateObject("InternetExplorer.Application")
inet.Visible = False
valtxt = lien_adresse 'On récupère l'adresse du lien dans une variable
'efface le fichier temporaire
Kill "c:\temp\temp.xls"
'lire page web
inet.navigate (valtxt)
'temporisation pour lire la page : 10 secondes environ le temps de récupérer les données
Application.Wait Now + TimeValue("00:00:10")
'delai 'procedure delai
Application.StatusBar = False
Do While Not inet.readyState = 4
' Ne rien faire
Loop
'On écrit le contenu de la page Web dans notre fichier temporaire
Set fil = fso.CreateTextFile("c:\temp\" & genericFIC)
fil.Write (inet.document.body.innerHTML)
fil.Close 'On ferme ce fichier temporaire
'lecture du fichier xls
'ouverture du fichier temp
NOMFICH = "c:\temp\temp.xls" 'Chemin + nom du fichier temporaire
Workbooks.Open Filename:=NOMFICH
'--- A Partir d'ici on travaille sur le fichier . xls ----
Dim valeur, dep
Set ws2 = Worksheets(1)
With ws2 'On travaille sur la feuille 1 de temp.xls
For boucle_lignes_fichier_temp = 148 To 155 'Parcours les lignes du fichier "temp.xls" (sur la 1ère colonne)
'On récupère la valeur dans le fichier temp.xls inscrite à la ligne qu'on boucle et à la colonne 1
valeur = ws2.Cells(boucle_lignes_fichier_temp, 1)
'On récupère le nb
If valeur = "Nombre" Then
dep = boucle_lignes_fichier_temp
nb = ws2.Cells(dep, 2)
Exit For
End If
Next boucle_lignes_fichier_temp
'On ferme sans enregistrer le fichier .XLS
ActiveWindow.Close SaveChanges:=False
End With 'On a fini de travailler sur le fichier Excel temp.xls
End Sub
Cette procédure est appelée 50 fois environ dans un programme, car je récupère 50 données d'une page qui varie selon un paramètre. Sauf qu'au bout d'un moment, j'ai un message d'erreur sur la ligne "Set inet = CreateObject("InternetExplorer.Application")" en me disant "mémoire insuffisante". Je ne vois pas trop pourquoi alors que le programme a pu charger correctement les premières pages, il s'arrête à un moment. Est-ce qu'il manque un code à la fin pour fermer la page IE qu'on a ouverte? .. je sais pas trop
Merci de votre aide!