Copie d'image sur internet

winslow

XLDnaute Nouveau
Bonjour Le forum,
Voilà, je cherche le moyen de copier une page internet vers un sheet excel bien définie. Jusqu'à présent, j'ai réussi en adaptant la méthode "Importer des tableaux contenus dans des pages Web vers une feuille Excel" de la page 7 de michel xld.

Le code:
Sub IMPORT()
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Htable As IHTMLElementCollection
Dim maTable As IHTMLTable
Dim j As Integer, i As Integer, x As Integer, Ligne As Integer
Dim NbPages As Byte

Application.ScreenUpdating = False
Sheets("DRF Gos").Activate
NbPages = 1
Ligne = 0
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate "http://qrwb.ecorp.cat.com/qrqm/dashboard/Dashboard.cfm?metric=DRF&view=TREND&fac_cd=25&prod_cat_grp=MHEX&grpBy=Grp&expand=Y&plot=Y&fields=VEHR,DRF1,DRF2,DRFM&print=Y" '& Chr(NbPages)
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop

Set maPageHtml = IE.document
Set Htable = maPageHtml.getElementsByTagName("table") 'objet type table

For x = 2 To Htable.Length - 1
Ligne = Ligne + i + 1

Set maTable = Htable(x)

For i = 1 To maTable.Rows.Length 'each row in table

For j = 1 To maTable.Rows(i - 1).Cells.Length 'each cell in row
Cells(Ligne + i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText
Next j

Next i
Next x

DoEvents
Set IE = Nothing

Application.ScreenUpdating = True
End Sub


J'aimerais maintenant importer toutes les images de cette même page. Je le fais actuellement manuellement via la méthode "copie, paste special, bitmap".
Merci d'avance,
David
 

MichelXld

XLDnaute Barbatruc
Re : Copie d'image sur internet

bonjour

Tu souhaites importer les images dans la feuille de calcul ou les enregistrer sur le disque dur ?
(Tu trouveras des exemples pour les images de la page html sur la wiki page 7, ainsi que 2 solution pour les télécharger sur le disque dur)


Bonne journée
MichelXld
 

winslow

XLDnaute Nouveau
Re : Copie d'image sur internet

Bonjour Michel,
Je souhaite les importer dans ma feuille de calcul.
J'avais bien remarqué les différentes méthodes d'enregistrement dans le "c" mais ces méthodes ne me sont pas utiles dans ce cas.
A noter que les noms des images sur internet se renomment sans cesse.
J'avais essayé de modifier le code qui compte les images d'une page web mais sans succes.
Merci de ton intérêt à mon problème.
David
 

MichelXld

XLDnaute Barbatruc
Re : Copie d'image sur internet

bonjour


Tu peux tester cette procédure pour boucler sur les images d'une page html et les insérer dans une feuille de calcul

Code:
Private Sub CommandButton3_Click()
'testé avec WinXP & Excel2002
'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
Dim imgHtml As HTMLImg
Dim i As Integer
Dim Shp As Shape
Dim Fichier As String
Dim Largeur As Single, Hauteur As Single, VertiPos As Single
 
VertiPos = 20
 
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
 
IE.navigate "[URL]https://www.excel-downloads.com/forums/[/URL]"
    Do Until IE.readyState = READYSTATE_COMPLETE
    DoEvents
Loop 'attend la fin du chargement pour continuer la procedure
 
Set maPageHtml = IE.Document
'compte le nombre d'images dans la page
MsgBox "nombre d'images dans la page : " & maPageHtml.images.Length
 
'boucle sur les images
For i = 0 To maPageHtml.images.Length - 1
    Set imgHtml = maPageHtml.images.Item(i)
 
    Fichier = imgHtml.src 'adresse image
    Largeur = imgHtml.Width 'largeur image
    Hauteur = imgHtml.Height 'hauteur image
 
    'expression.AddPicture
    '(FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
    Set Shp = Feuil1.Shapes.AddPicture(Fichier, msoFalse, msoCTrue, _
        50, VertiPos, Largeur, Hauteur)
 
    VertiPos = VertiPos + Hauteur + 20
    Set Shp = Nothing
Next i
End Sub



Bonne journée
MichelXld
 

winslow

XLDnaute Nouveau
Re : Copie d'image sur internet

Bonjour Michel et merci de ton aide,
Ta macro bug sur la dernière ligne.
Set Shp = Feuil1.Shapes.AddPicture(Fichier, msoFalse, msoCTrue, _
50, VertiPos, Largeur, Hauteur)

Avec mention "Object required"
La macro compte bien le nombre d'image mais ne les ramène pas.
Les références Microsoft HTML Objects Library et Microsoft Internet Controls sont activées.
Peut-être activer une autre?
Merci,
David
 

porcinet82

XLDnaute Barbatruc
Re : Copie d'image sur internet

Salut,

Je passe féliciter Michel pour ce petit bout de code...
Winslow, je viens de tester le code et chez moi il fonctionne parfaitement. La feuille sur laquelle tu executes ton code s'appelle t'elle Feuil1, ou as-tu une feuille nommée Feuil1 dans ton classeur??? Si ce n'est pas le cas, modifie le nom de la feuille dans le code :
Set Shp = Nom_de_ta_feuille.Shapes.AddPicture(Fichier, msoFalse, msoCTrue, 50, VertiPos, Largeur, Hauteur)

@+
 

winslow

XLDnaute Nouveau
Re : Copie d'image sur internet

Bonjour Porcinet,
Juste!!! Grrrr. J'aurais dû le voir!!
Mais quand je remplace "feuil1" par le nom de ma feuille qui se nomme "DRF Gos", donc dans le code:
Set Shp = Sheets("DRF Gos").Shapes.AddPicture(Fichier, msoFalse, msoCTrue, _
50, VertiPos, Largeur, Hauteur)

Je reçois le message d'erreur:"The specified file wasn't found"
J'ai essayé en rajoutant le nom du workbook au nom de la sheet. Même message.
J'ai essayé en remplaçant par "ActiveSheet". Même message..
Il y a certainement encore une astuce que je ne remarque pas encore..
 

porcinet82

XLDnaute Barbatruc
Re : Copie d'image sur internet

re,

Bizarre, je viens de faire le test avec le meme nom de feuille que toi et tout a fonctionner. Essaye d'executer le code pas à pas (avec la touche F8) pour voir ou l'erreur se produit, car ce n'est pas certains que ce soit le nom de la feuille qui soit en faute.

@+
 

winslow

XLDnaute Nouveau
Re : Copie d'image sur internet

Re Porcinet et merci de ton aide.
Enfait, lorsque j'essaie le code pour importer les images de ce site (excel Download), ça fonctionne. Mais lorsque j'essaie sur le site qui m'intéresse, ça ne fonctionne pas! La macro me donne bien le nombre d'image présent sur la page mais ne me les importe pas.
Le format de l'image est en .png
Manuellement quand je veux les copier dans une sheet, je n'ai pas d'autres solutions que d'effectuer un copy - paste special - Bitmap.
Serait-ce peut-être la cause à mon problème?
Merci,
David
 

Discussions similaires

Statistiques des forums

Discussions
312 690
Messages
2 090 978
Membres
104 720
dernier inscrit
drd74