Copie d'une page web avec une macro Excel 365

Résolu
mikel831 Messages postés 120 Date d'inscription mardi 23 octobre 2012 Statut Membre Dernière intervention 28 avril 2024 - 1 avril 2024 à 11:42
mikel831 Messages postés 120 Date d'inscription mardi 23 octobre 2012 Statut Membre Dernière intervention 28 avril 2024 - 18 avril 2024 à 18:27

Bonjour !
J'ai une macro qui ouvre une page web.
Comment, en code VBA, copier entièrement cette page et la coller ensuite dans une feuille Excel à partir de la cellule A1 (par exemple) ?

A voir également:

1 réponse

BoBot Messages postés 2786 Date d'inscription mardi 4 juillet 2023 Statut Modérateur Dernière intervention 3 mai 2024 184
8 avril 2024 à 11:53
Bonjour !
L'IA qui aime les défis est là !
Pour copier une page web en utilisant VBA dans Excel 365, vous pouvez utiliser les objets QueryTables ou InternetExplorer. Cependant, Excel peut ne pas formater correctement le HTML en fonction du site Web. Voici comment le faire avec QueryTables:

```
Sub CopierPageWeb()
Dim qt As QueryTable
Dim url As String

' définir l'URL du site Web à copier
url = "http://www.example.com"

' ajouter une QueryTable...
Set qt = ActiveSheet.QueryTables.Add(Connection:="URL;" & url, Destination:=Range("A1"))

' configurer la QueryTable...
With qt
.WebSelectionType = xlEntirePage '... pour sélectionner toute la page
.Refresh BackgroundQuery:=False '... pour rafraîchir les données et les coller dans la feuille
End With

' libérer l'objet QueryTable
Set qt = Nothing
End Sub
```

Cela doit automatiquement coller l'ensemble de la page Web à l'URL spécifiée dans la cellule A1 de la feuille active.

Remarque : Assurez-vous d'avoir une connexion Internet active et que l'URL que vous spécifiez est valide et accessible.

Si vous voulez éviter l'utilisation de QueryTables, vous pouvez utiliser InternetExplorer.Application avec HTMLDocument et HTMLBody. Voici comment vous pouvez le réaliser:

```
Sub CopierPageWeb()
Dim IE As Object, html As Object

' Créer un nouvel Internet Explorer
Set IE = CreateObject("InternetExplorer.Application")

' URL de la page à copier
IE.Navigate "http://www.example.com"

' Attendre que IE ait fini de charger la page
Do While IE.Busy Or IE.readyState <> 4
Application.Wait DateAdd("s", 1, Now)
Loop

' Copier le texte de la page
Set html = IE.document.all
html.Select
html.CopyToClipboard

' Coller les informations dans Excel
Range("A1").PasteSpecial

' Quitter IE
IE.Quit
Set IE = Nothing
Set html = Nothing
End Sub
```
Pour ce code, il est préférable d'ajouter une référence à "Microsoft HTML Object Library" en utilisant "Tools -> References" dans l'éditeur VBA.
Assurez-vous bien également de ne pas naviguer sur d'autres pages avec Internet Explorer pendant l'exécution de la macro.

0
mikel831 Messages postés 120 Date d'inscription mardi 23 octobre 2012 Statut Membre Dernière intervention 28 avril 2024 10
18 avril 2024 à 18:27

Bonjour!
J'ai opté pour la  QueryTable, et ça fonctionne bien.
Cependant, dans certains cas, les images et les icones de la page web perturbe la copie . Est-il possible de les supprimer en copiant la QT ?

0