Utilisation navigateur internet via macro VBA [Résolu/Fermé]

Signaler
Messages postés
602
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Messages postés
602
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Bonjour,

J'essaye de copier/coller une page internet dans excel en conservant sa mise en page.

Si j'ouvre l'adresse internet dans excel, j'obtiens le code html.

Il faudrait que j'ouvre une page internet (url cellule F23) dans firefox (par exemple) via une macro, que je sélectionne et copie tout le contenu de la page internet et le colle dans excel (collage spécial / valeur dans cellule G18) ; de manière à ne pas avoir les balises html.

En effet, il me serait difficile de re-filtrer les informations à partitr du code html.

Savez-vous comment faire celà en VBA ?

récapitulatif:
Dans Excel
-copier cellule F23 (adresse internet)
-ouvrir l'adresse copiée dans un navigateur internet (firefox chez moi)

Dans Firefox (sendkeys)
-sélectionner tout le contenu de la page internet(Ctrl+A)
-copier le contenu sélectionné (Ctrl+V)

dans Excel
-collage spécial/ valeur cellule G18

~~Il faudra peut être refermer la fenêtre internet pour éviter d'en ouvrir trop, car cette macro va tourner dans une boucle~~


2 réponses

Messages postés
23494
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2020
6 353
Bonjour,

Ta page internet n'est pas accessible via 'données / données externes / nouvelle requete sur le web...' ? (sur 2003)
Ainsi tu récupères partie ou toute la page dans une feuille, que tu peux rafraichir automatiquement.

exemple requete web simple
Requetes web multiples

eric

edit: le 2nd exemple fonctionnait à l'époque de sa création. Les pages ont peut-être changé dans leur structure mais le principe de la macro reste le même...
Messages postés
23494
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2020
6 353
edit2 : pour le 2nd exemple :
- clic-droit sur les données Feuil1,
- 'modifier les données'
- cocher en haut à gauche pour récupérer toute la page (ne récupérer que le bloc de données voulu n'est plus possible)
Bien sûr les données voulues ont changé d'emplacement sur la Feuil1

eric
Messages postés
602
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
216
Bonjour Eric,

Je ne connaissais pas cette fonctionnalité.
Dans le fichier n°1, je n'arrive pas à coller l'adresse à visiter (Ctrl+V ne fonctionne pas)
En plus la fenêtre s'ouvre sur search.conduit.com, j'ai l'impression d'avoir choppé une merde.
Dans le fichier N°2, je récupère le code html
Je vais essayer d'approfondir mes recherches à ce sujet.

Pour l'instant voila à quoi ressemble mon code

Sub Aspirine()

'il faudrait remplacer http://www.turlututu.com par l'adresse en cellule F23

Shell("C:\Program Files\Mozilla Firefox\firefox.exe http://www.turlutututu.com", vbNormalFocus)

'la page firefox s'ouvre bien

'Sélectionne tout - Ctrl+a - c'est surement faux
SendKeys "^(a)", True

'Copie - Ctrl+c - c'est surement faux
SendKeys "^(c)", True

Application.Wait (Now + TimeValue("0:00:01"))

Windows("monfichier.xls").Activate

Application.Wait (Now + TimeValue("0:00:01"))

Range("G18").Select
Application.CutCopyMode = False
ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:= _
False
End Sub
Messages postés
23494
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2020
6 353
Re,

Dans le fichier n°1, je n'arrive pas à coller l'adresse à visiter (Ctrl+V ne fonctionne pas)
Fais un clic-droit dans les données (Feuil1!B3) puis 'modifier la requete...'
Le ctrl+v marche dans la barre d'addresse, maintenant tous les sites ne s'ouvrent pas forcément.
En plus la fenêtre s'ouvre sur search.conduit.com, j'ai l'impression d'avoir choppé une merde.
C'est l'adresse qui est incorrecte non ?

Le mieux serait de connaitre ton lien et la zone qui t'interesse pour confirmer si tu peux passer par là.

eric
Messages postés
23494
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2020
6 353
sendkeys c'est faisable, le pb c'est que tu ne sais jamais si tu es sur la bonne page et si elle a fini d'être affichée...
Impossible de synchroniser correctement
Personnellement je resterai sur une requete web, et pourquoi pas faire une petite fonction personnalisée pour oter les balises <...> (bien qu'elles peuvent t'aider à te caler au bon endroit)
Messages postés
23494
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2020
6 353
ex (sûrement à améliorer...) :
Function suppBalises(chaine As String) As String
    Dim ch As Variant, i As Long
    ch = Split(chaine, "<")
    For i = 0 To UBound(ch)
        If InStr(ch(i), ">") Then
            suppBalises = suppBalises & " " & Mid(ch(i), InStr(ch(i), ">") + 1)
        Else
            suppBalises = suppBalises & ch(i)
        End If
    Next i
    suppBalises = Trim(suppBalises)
End Function
Messages postés
602
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
216
Bien vu Eriic, en ajoutant une pause de quelques secondes après l'ouverture de la page ça fonctionne.

C'est vrai qu'il serait préférable de savoir quand la page a fini d'être affichée, quitte à utiliser Internet Explorer.

Je vais gonfler le temps de pause. Merci bcp.

Sinon connais-tu la solution à cette question ?
comment remplacer http://www.turlututu.com par l'adresse en cellule F23 ?
Shell("C:\Program Files\Mozilla Firefox\firefox.exe http://www.turlutututu.com", vbNormalFocus)
Messages postés
23494
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2020
6 353
essaie avec :
Shell("C:\Program Files\Mozilla Firefox\firefox.exe " & [F23], vbNormalFocus)
Messages postés
602
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
216
ça fonctionne parfaitement.
J'ai simulé un temps d'ouverture de page trop long, ce qui fait planter la macro, et ça me va bien comme ça.

Merci beaucoup pour tes précieux conseils, je note sujet comme résolu.