Copie d'une page web avec une macro Excel 365

Résolu
mikel831 Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   -  
mikel831 Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   -

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) ?

1 réponse

  1. CCMBot
     
    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
    1. mikel831 Messages postés 237 Date d'inscription   Statut Membre Dernière intervention   19
       

      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