automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

GCFRG

XLDnaute Occasionnel
Bonjour à tous,

Quelqu'(un, une) aurait t'il une idée quant à la manière de procéder pour copier les données d'une page html dans une feuille Excel de manière automatique?
Jusqu’à présent j'ai une macro qui ouvre la page voulue, puis je copie manuellement les données présentes dans la page, puis une autre qui colle les données dans la feuille Excel et y effectue le tri nécessaire pour ne garder les données qui m'intéresse.
Là où je bute, c'est pour la copie, en effet, c'est assez long à faire manuellement quand la copie porte sur plusieurs pages.

D'avance merci à qui aurais un début d'idée.

Gilbert
 

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

re bonjour à toutes & tous

Merci vbacrumble,
piste intéressante, mais je ne veux pas importer des données, juste un copier coller en fait.
j'ai trouvé des solutions pour importer dans 1 fichier texte, dans 1 fichier word, mais pas dans une feuille Excel.
je joint le code qui permet de récupérer les données dans un fichier texte.
les élément de la page HTML qui m'interesse concerne la désignation du produit,le prix, et la disponibilité.
en selectionnant cette zone manuellement, en la copiant et en la collant dans ma feuille Excel ma macro fait le tri pour la désignation et le prix sans problème.:) reste à fignolé pour le reste.
si je pouvais copier directement dans la feuille plutôt que dans un fichier texte je gagnerais énormément de temps, mais la, je bute!!
alors si quelq'un à une idée;)

d'avance Merci

Gilbert

Code:
Sub exporterPageInternetDansfichierTexte()
Dim IE As InternetExplorer
Dim nFile As Integer
Set IE = CreateObject("internetExplorer.Application")
With IE
.Visible = False
.Silent = True
.navigate "http://www.topachat.com/pages/produits_marque_est__puis_cat_est_micro_puis_rubrique_est_wenc_2_1_puis_nblignes_est_100_puis_ordre_est_P_puis_sens_est_ASC_puis_code_pays_est_FR_puis_top_ht_est_n_puis_art_opt_est_.html"
Do Until .readyState = READYSTATE_COMPLETE
DoEvents
Loop 'attend la fin du chargement
nFile = FreeFile
Open "C:\xldtest.txt" For Output Shared As #nFile
Print #nFile, .document.DocumentElement.innerText
Print #nFile, .document.DocumentElement.innerHTML
Close #nFile
.Quit
End With
Set IE = Nothing
End Sub
 

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Bonjour à toutes & à tous,

Quelqu'un pourrais il m'aider à améliorer ce code.
en effet, j'ai finalement fini par trouver une solution pour récuperer les données que j'avais besoins sur le site topachat.
je passe via 1 fichier texte, dans lequel je récupère les données après un laborieux "triage", peut y à t'il des solutions plus simples pour y arriver, aussi je suis à l'écoute de toutes sujections, donc si quelqu'un peut jeter 1 coup d'oeil à mon fichier, je lui en serait reconnaissant.
@+
GC
 

Pièces jointes

  • devis.zip
    69.8 KB · Affichages: 233
  • devis.zip
    69.8 KB · Affichages: 253
  • devis.zip
    69.8 KB · Affichages: 287

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML Rectification VBA

Bonjour,
je me suis aperçu que j'avais oubliés d'enlever 1 boucle qui provoquait 1 erreur.

Je remercie ceux qui on tester, car le site en question rame 1 peu.
les EURLs correspondant aux divers éléments figurent dans la feuille WEBREF
Je vais continuer à chercher.......... une solution pour améliorer le traitement des données récupérées, notament les doublons générés en début de copie.
sur le site, la disponnibilité du produit est mentionner, mais je n'arrive pas à récupérer cette donnée:mad:

Je joint également le userform qui récupère les données pour les exploiter pour le lancer, il faut que les feuilles de données ne soit pas vides.

Peut-être quelques commentaires m'aideraient t'ils.


Merci d'avance

GC::cool:
 

Pièces jointes

  • devis3.zip
    82.8 KB · Affichages: 186
  • devis3.zip
    82.8 KB · Affichages: 203
  • devis3.zip
    82.8 KB · Affichages: 216

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Bonsoir vbacrumble.

Si j'ai bien lu ton message, mais j'ai beaucoup de feuilles à mettre à jour,(ouvres le fichier) et je recherchait une manière d'automatisé ceci. d'autre part, bon nombre de caractère dans l'adresse EURL pose problème.
ci tu y arrives avec cette eurl

Achat Carte mère socket 775 pas cher !

fais le moi savoir.

de plus cette mise à jour doit ce faire via le planificateur de tache, la nuit
la macro est alors lancer à partir de Workbook Open

Merci de m'avoir répondu, car je n'ai pas beaucoup de succes sur ce fil

Cordialement
Gilbert
 

vbacrumble

XLDnaute Accro
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Re


Je précise ma pensée alors

(Ou voir aussi (dans le menu Données d'Excel )
Données/Données externes/Nouvelle requête sur le Web

cette proposition étant automatisable (dans un premier temps) en lançant le macro recorder tout en faisant la requête.
(tu peux donc faire n requetes)

Ensuite en épluchant le code VBA généré et en essayant de l'adapter.
 
Dernière édition:

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Re , comme je le disait précedèment, problème avec certains caractères ou quand l'eurl utilisé contient plus de 218 caractères peut-être est-ce ceci qui génères des erreurs, as tu tenté de le faire avec celle que j'ai joint ?, ce qui est sur c'est que çà ne marche pas pour toutes les eurl présentent dans mon classeur

Autre avantage, dans la solution que j'ai choisi, internet explorer peut être lancer en mode caché et mode silencieux donc en tache de fond.

Merci tout de même pour ton aide

Cordialement Gilbert
 

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Bonjour, à toutes et à tous,

J'ai mis au point une méthode qui me permet de récupérer des données sur 1 site internet, à partir d'un code trouvé sur le forum et écrit par Michelxld que je remercie au passage, çà fonctionne plutôt bien, toutes fois, je ne récupère pas tous les données voulues, je récupère les intitulés des produits, le prix, la réf du produit chez le marchand, mais je n'arrive pas à récupérer les disponibilités.
Et également :
Est –il possible, si une page HTML ce fige lors de l’ouverture de pouvoir « rafraichir » cette page via le code au bout d’une ou deux minutes par exemple.
Je fais partie d'un club informatique, ou j'enseigne à des débutants l'utilisation d'un ordinateur, et des softs. Bien souvent on me demande de ce qu'il faut faire pour en augmenter les performances, cette application me servira à faire un chiffrage rapide de leurs besoins sans avoir à consulter le site, notre connexion à internet ne nous permettant pas d'ouvrir simultanément sur 1 dizaine de machines la page de ce marchand en ligne, sans de longues minutes d'attentes entre chaque page.
Une mise à jour pendant la nuit précédent le cours suffit pour avoir les prix du jour.

Aussi 1 p'tit coup de main me serait salutaire

je joint le fichier un peu plus abouti, et avec toutes les données
les boutons de lancement ce trouve dans la feuilles "Disque durs"

Merci d'avance à qui m'aidera
 

Pièces jointes

  • devis3.zip
    115.4 KB · Affichages: 260
  • devis3.zip
    115.4 KB · Affichages: 279
  • devis3.zip
    115.4 KB · Affichages: 245
Dernière édition:

GCFRG

XLDnaute Occasionnel
Problème de rafraichissement page HTML (VBA)

Bonjour le forum
J'ai une macro qui boucle sur toutes les feuilles de mon classeur, et qui en fonction du nom de la feuille, récupère l'EURL qui si attache dans une Feuille nommée WEBREF, lance la connection au site, récupèrent les données voulues, et les transfère dans chaque feuille pour 1 traitement ultérieur.
ça fontionne plutot bien.
1 p'tit Hic cependant, lors d'un certain nombre de connections, la page html à tendance à se figer, et peut mettre plusieurs minutes à se charger

Ma question:

Est –il possible, si une page HTML se fige lors de son ouverture de pouvoir « rafraichir » cette page via le code au bout d’une ou deux minutes par exemple, ou de la relancer si elle n'est pas chargée entièrement au terme d'un certain délai.

Je fais partie d'un club informatique, ou j'enseigne à des débutants l'utilisation d'un ordinateur, et des softs. Bien souvent on me demande de ce qu'il faut faire pour en augmenter les performances, cette application me servira à faire un chiffrage rapide de leurs besoins sans avoir à consulter le site qui rame, mais également professionellement, je suis en micro entreprise, je monte du matériel informatique, et ne facture que la M.O, ce n'ai donc pas dans un but mercantile que je récupère ses données;)

je joint le fichier, avec toutes les données
avec IE.Visible = True
pour pouvoir observer

les boutons de lancement se trouvent dans la feuille "Disque durs"

Merci d'avance à qui m'aidera

Gilbert
 

Pièces jointes

  • devis3.zip
    115.4 KB · Affichages: 323
  • devis3.zip
    115.4 KB · Affichages: 318
  • devis3.zip
    115.4 KB · Affichages: 339
Dernière édition:

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Bonjour, à tous,
toujours pas de solution à mon problème, la mise à jour ce fait quand même, mais peux prendre 1/2 heure à 3/4 d'heure, par contre si je rafraichit la page quand elle ne se charge pas immédiatement, moin de 5 minutes suffisent, il doit bien exister 1 moyen pour, qu'au bout d'un certain délai, on rafraichisse la feuille via le code, je cale:mad:, j'ai imaginé plusieurs scénarios mais rien ne marche.

Si qu'elqu'un à une idée ??

Gilbert
 

GCFRG

XLDnaute Occasionnel
Re : automatisation d'une copie de page HTML dans une feuille EXCEL via VBA

Bonjour, pour ce que çà intéresse, j'ai enfin trouvé.

C'était tout bête, je cherchais un truc compliqué alors que la solution était toute simple.
pour ce que çà intéresse j'ai modifié mon code comme suit:
Code:
With Sheets(Recherche)
Dim Tempo as String
If Application.Wait(Now + TimeValue("0:00:03")) Then [COLOR="DeepSkyBlue"]'pour laisser le temps à IE de se fermer correctement[/COLOR]
Set IE = CreateObject("internetExplorer.Application")
    With IE
        .Visible = True
        .Silent = True
        .navigate Adresse
Déb:
        Tempo = Now() + TimeValue("0:01:30") [COLOR="DarkRed"]'J'ajoute 1Mn30  à maintenant dans ma variable[/COLOR]                
                Do Until .readyState = READYSTATE_COMPLETE [COLOR="darkred"]'tant que la page n'est pas entièrement chargé[/COLOR]
                If Tempo <= Now() Then [COLOR="darkred"]'Si le délai est passé[/COLOR]
                .Refresh [COLOR="darkred"]'Je raffraichit la page (Je ne connaissait pas Aide Excel 207)[/COLOR]                
                GoTo Déb [COLOR="darkred"]'je redémare le timing[/COLOR]
                End If
            DoEvents
        Loop [COLOR="DarkRed"]'attend la fin du chargement[/COLOR]
        [COLOR="darkred"]'Je continue mon traitement[/COLOR]
        nFile = FreeFile
        Open "C:\test.txt" For Output Shared As #nFile
        Print #nFile, .document.DocumentElement.innerText
        Close #nFile
        .Quit
        Set IE = Nothing
    End With

Ouf je vais pouvoir avancé merci à tous ce qui de près ou de loin ce sont intéresser à mon problème.

Gilbert:)
 

Discussions similaires

M
Réponses
9
Affichages
469
Maikales
M

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972