IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

Import donnée page WEB


Sujet :

VBA

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    maintenance
    Inscrit en
    Août 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 7
    Points : 0
    Points
    0
    Par défaut Import donnée page WEB
    Bonjour à tous,

    Afin de compléter ma formation VBA et de compléter un projet perso, je cherche à importer des datas depuis un site internet, vers un fichier excel.

    Plus précisément, avec l'utilisation de la macro, je voudrais obtenir un TABLEAU qui compile les informations des 6 tableaux que j'ai annoté ci dessous et qui se trouvent à différents endroits de la page WEB (dans des onglets ou plus bas sur la page web). Dans un premier temps je récupère sur une feuille le tableau "1" puis j'aimerais ajouter des colonnes à celui ci pour y inclure "2", "3", "4", "5" et "6". => voir image ci dessous.

    Nom : 1567112096-sans-titre.jpg
Affichages : 494
Taille : 642,7 Ko

    Récupérer le tableau "1" ne me pose pas de problèmes avec la procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub Import()
        With ActiveSheet
            With .QueryTables.Add(Connection:="URL;" & "http://www.geny.com/partants-pmu/", Destination:=.Cells(1, 1))
                .Name = "mDFquery"
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = False
                .RefreshOnFileOpen = False
                .BackgroundQuery = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .WebSelectionType = xlSpecifiedTables
                .WebFormatting = xlWebFormattingRTF
                .WebTables = "tableau_partants"
                .WebPreFormattedTextToColumns = True
                .WebConsecutiveDelimitersAsOne = False
                .WebSingleBlockTextImport = False
                .WebDisableDateRecognition = False
                .WebDisableRedirections = False
                .Refresh BackgroundQuery:=False
            End With
        End With
    End Sub
    Mais c'est après que ça se gâte je n'arrive pas à récupérer les tableaux dans les onglets "2", "3", "4" car ils n'apparaissent pas directement sur la page (il faut cliquer sur l'onglet pour voir le tableau apparaître) et pour "5" et "6" qui ne sont pas sous forme de tableau je ne vois pas comment faire.

    Pouvez vous m'orienter et me conseiller ?

    Merci de votre aide.
    Jean

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Salut,
    pour tes premiers points
    s'il te faut cliquer sur les onglets pour faire apparaitre les tableaux, tu dois pouvoir trouver leur id. Une fois cet id trouvé, tu pourras effectuer un click dessus.
    on travaille d'abord sur ceux-ci avant d'enclencher les 5 et 6
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    maintenance
    Inscrit en
    Août 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 7
    Points : 0
    Points
    0
    Par défaut RE
    Bonjour,

    Oui en inspectant la page j'avais déjà trouvé leurs id:
    - pour "1": tableau_partants
    - pour "2": tb-j-p
    - pour "3": tb-e-p
    - pour "4": tb-v

    Pour lorsque dans le code que je t'ai mis précédemment, je remplace tableau_partants par tb-j-p ou un autre cela ne fonctionne pas ...

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Le soucis que tu as ici c'est d'abord de faire afficher le tableau dans ton l'écran.

    Est-ce que cette étape est faite ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    maintenance
    Inscrit en
    Août 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 7
    Points : 0
    Points
    0
    Par défaut RE
    Non, désolé je ne vois pas comment procéder.

    Vous parlez de faire afficher le tableau dans ton l'écran via une macro VBA ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    pour afficher le tableau tu cliques sur l'onglet stat des jockeys, donc si tu devais reproduire ce comportement par le code, tu passerais par GeElementById
    https://qwazerty.developpez.com/tuto...excel/#LIV-B-1

    Puis tu cliquerais dessus
    https://qwazerty.developpez.com/tuto...a-excel/#LIV-D
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    maintenance
    Inscrit en
    Août 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Dans un premier temps j’essaie déjà de faire avec l'exemple et cela ne fonctionne pas, j'ai une erreur d'exécution 13 "incompatibilité de type. car ma variable est nulle:

    Nom : Sans titre.png
Affichages : 412
Taille : 3,2 Ko

    Mais je ne comprend pas pourquoi car ne nom du bouton est bien "btnK":

    Nom : Sans titre2.png
Affichages : 435
Taille : 50,5 Ko

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub RechercheVBAExcel()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim InputGoogleBouton As HTMLInputElement
     
       'Chargement d'une page Web Google
       IE.navigate "www.google.fr"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
       'On attend le chargement complet de la page
       WaitIE IE
     
       'On pointe le membre Document
       Set IEDoc = IE.document
     
       'On pointe notre Zone de texte
        Set InputGoogleZoneTexte = IEDoc.all("q")
     
        'On définit le texte que l'on souhaite placer à l'intérieur
        InputGoogleZoneTexte.Value = "VBA Excel"
     
        'On pointe notre bouton
        Set InputGoogleBouton = IEDoc.all("btnK")
     
        'On simule un clic
        InputGoogleBouton.Click
     
        'On attend la fin de la recherche
        WaitIE IE
     
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub
     
    Sub WaitIE(IE As InternetExplorer)
       'On boucle tant que la page n'est pas totalement chargée
       Do Until IE.ReadyState = READYSTATE_COMPLETE
          DoEvents
       Loop
    End Sub
    Sinon pour mon application lors que je regarde sur le site, le code est différent de celui de google, et je n'ai pas de name:

    Nom : Sans titre3.png
Affichages : 462
Taille : 112,8 Ko

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    maintenance
    Inscrit en
    Août 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : maintenance
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2019
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    UP ?

Discussions similaires

  1. [XL-2007] Importer données site web en direct
    Par Fenix01 dans le forum Excel
    Réponses: 5
    Dernier message: 26/05/2010, 13h07
  2. [XL-2003] importer données du web avec mot de passe
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/10/2009, 18h26
  3. importer une page web dans Excel
    Par ilcocodrillo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/08/2008, 11h00
  4. [w10]récupérer données page web
    Par minoltis dans le forum WinDev
    Réponses: 2
    Dernier message: 08/02/2007, 13h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo