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

Macros et VBA Excel Discussion :

Récup Web et Webtables [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Récup Web et Webtables
    Bonjour le forum,

    J'aimerai pouvoir récupérer des infos sur un site web, mais je voudrais comprendre comment faire...

    Ma première question

    Comment savoir et déterminer quelle table (webtables), je souhaite récupérer?

    J'ai déjà un début de code, j'ai déjà essayé avec un enregistrement de macro savoir quelle table, mais je ne vois pas quoi en faire?

    Je ne comprends pas comment VBA sait ce qu'il faut récupérer?

    Bref j'ai des questions,

    En soif d'apprendre

    Bonne soirée

    Seb

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour !

    VBA ne sait rien, il interprète juste un programme !

    Utiliser le navigateur internet pour trouver les éléments à récupérer
    ou encore directement dans le code source de la page web …

    S'il s'agit vraiment d'une table HTML, le plus simple est d'utiliser la fonction de feuille de calculs
    via le menu Données, à partir du Web : il n'y a souvent rien à coder ! (Sinon c'est l'objet QueryTable en VBA)
    Consulter la documentation interne d'Excel et les discussions du forum traitant ce sujet …

    __________________________________________________________________________________
    Tous unis, tous Charlie

  3. #3
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour Marc-L,

    Merci pour cette réponse, mais j'ai déjà fait cela, et franchement c un peu de pékinois pour moi

    J'ai codé avec Querytable, mais je n'arrive pas à récupérer ce que je veux....

    Et je ne comprends pas le code d'importation.

    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
    Sub ImportRapp(vURL As String, R As Range)
        With ActiveSheet.QueryTables.Add(Connection:="URL;" & vURL, Destination:=R)
            .Name = "LaRequete"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebTables = "4"
            .WebFormatting = xlWebFormattingRTF
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
            .Delete
        End With
        'Efface l'entête
        R.Resize(3, 9).ClearContents
    End Sub
    Bonne soirée

    Re,

    Bon, j'ai trouvé les 'Tables" dans le code source de la page web, mais j'en fais quoi maintenant????

    Et je nage, nage , nage......

    bref c le trou noir

    A+

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Depuis la feuille de calculs, c'est simple ! Une fois la page affichée manuellement via la fonction à partir du Web,
    il y a une flèche devant chaque table à importer, en cliquant dessus …

    Si l'information désirée n'est pas chargée, soit ce n'est pas la bonne table
    soit elle ne fait pas partie d'une table ou encore la page est protégée

    Dans ce cas voir du côté de l'Interaction avec Internet Explorer via VBA Excel mais souvent plus lent que QueryTable.
    Voir cette discussion décrivant la structure d'une table HTML …

    Le plus rapide étant une requête mais cela demande de ne pas nager ! Les deux en exemple dans cette autre discussion

    Sans compter les autres exemples dans les discussions de ce forum !

  5. #5
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonsoir Marc-L

    Depuis la feuille de calculs, c'est simple ! Une fois la page affichée manuellement via la fonction à partir du Web,
    il y a une flèche devant chaque table à importer, en cliquant dessus …
    Pour cela, j'ai vu, et fait, j'arrive à extraire ce que je veux, mais que pour une page, dans mon cas j'ai des infos à tirer d'environ 54 pages, changeante (adresse de fin) tous les jours, mais la structure est la même.

    Je vais lire les sujets que tu m'as proposé et reviendrai vers toi pour de dire quoi....

    Edit: J'ai toujours cette question comment déterminer le numéro d'un table (webtables= "3" par exemple)?
    Sinon pour le lien que tu m'as donné...eh bien c du lourd, j'ai franchement rien compris, mais je regarderai cela à tête reposée....


    Bonne soirée

    Seb

    Bonsoir,

    Bon après une journée passé à lire des tutos (qwazerty en autre) et à essayer de comprendre, rien ne fonctionne dans ces tutos, je n'arrive jamais à obtenir ce qu'on devrait avoir même avec des copier/coller....

    tous les code avec "WaitIE" ne fonctionne pas, bref.....j'en ai plein la tête....tout ça pour rien au bout

    Bon je retourne à ma lecture afin d'essayer d'en tire quelque chose...j'ai pas dis mon dernier mot

    Bonne soirée à tous

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Voir les codes dans les discussions en lien, c'est plus récent …



  7. #7
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Avancement
    bonjour à tous,

    Bon suite à plusieurs recherches, voici ce que j'ai réussi à sortir:
    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
    Sub RecupRapportZeturf()
     
        With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.zeturf.fr/fr/resultats-et-rapports/course?id=154430", Destination:=Range("A1"))
            .Name = "Zeturf"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingNone
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    End Sub
    Donc de là, je vois en Feuil1 et A1, tous ce qui se trouve sur cette page, dont ce qui m'intéresse....Formidable....

    C pas grand chose, mais c tout de même un début....

    Après je me suis penché sur le code HTML de la page...J'ai repéré les balises qui m'intéressent....Maintenant à moi de construire la suite.....

    Il faut savoir que j'ai besoin de récupérer tous les jours, et cela pour chaque page la même chose en sachant que dans l'adresse (http://www.zeturf.fr/fr/resultats-et...urse?id=154430) seul "id=" change en prennant +1 (donc id=154431).

    J'ai besoin également, sur chaque page, de récupérer 12 critères (tous repérés en HTML)

    EDIT:
    Bon j'ai réussi à intégrer dans mon code "Webtables", ce qui me permet d'extraire la table ce dont j'ai envie, par contre dans cette même page, j' ai d'autres "Tables" à extraire...Comment faire?
    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 RecupRapportZeturf()
     
        With ActiveSheet.QueryTables.Add(Connection:="URL;http://www.zeturf.fr/fr/resultats-et-rapports/course?id=154430", Destination:=Range("A1"))
            .Name = "Zeturf"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            '.WebSelectionType = xlEntirePage
            .WebSelectionType = xlSpecifiedTables
            .WebTables = "20"
            .WebFormatting = xlWebFormattingNone
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
            '.Delete
        End With
    Sinon je peux extraire la page entière, comme je l'ai déjà fait, car ce que je veux récupérer est déjà dedans, par contre comment faire cela pour chaque pages?

    MErci pour votre éclairage...

    Bonne journée

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Activer le Générateur de macros puis manipulation depuis la feuille de calculs (cf post #4) …



  9. #9
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Re,

    Ok pour le mise en forme de ce que j'ai récupéré...Mais pour qu'il aille cherché le restant des données dans chaque page, comment dois-je procédé?

    Il faut que je lui donne l'ordre d'aller extraire chaque données dans chaque page... en créant une "boucle", j'utilise peut-être pas forcément le bon terme???

    De même à chaque page chargée dans une feuille, il faut qu'il supprime le contenu à chaque nouvelle requête. A moins qu'il y est une solution plus rapide???

    après un bouton de MAJ, est indispensable, afin actualiser les résultats au jour le jour, après avoir compléter le tableau de prono manuellement.

    voici une trame de ce que je souhaite réalisé

    A+

  10. #10
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Une page Web, une QueryTable

    La suppression de données dans une plage de cellules est instantanée.

  11. #11
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour à tous,

    Non loin sans faut, d'avoir encore passé une journée, à essayer avec multiples tutos, d'avoir téléchargé un nombre incalculable de fichier et pour tout çà rien au bout.....C franchement décevant....

    Rien de concret sur le web, comme ici ou sur d'autres forum, soit trop simple soit fastidieux, mais rien de ce que je recherche, c d'ailleurs pour cela que j'ai posté mon message ici......

    Bref je vais essayer encore, encore et encore, car je n'aime pas les échecs.......

    A+

  12. #12
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour à tous,

    Bon après recherche, j'arrive à extraire plusieurs "Webtable", d'une seul page web....Mais maintenant toujours la même demande..

    Comment boucler sur plusieurs pages similaires, ce que je veux récupérer tout les jours?

    En sachant que je mets mon fichier à jour "tous les jours"

    MerKi

    A tchao

  13. #13
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    A savoir si les QueryTable sont bien paramétrées, que ce soit manuellement depuis la feuille de calculs
    (un must : aucune ligne de code !) ou par une procédure en VBA, elles peuvent être automatiquement
    mises à jour à l'ouverture du classeur et ce, sans une ligne de code !

    Sinon utiliser une boucle pour chaque page en ayant au préalable extrait la partie fixe de la partie variable de leur URL …

  14. #14
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonsoir Marc,

    Sinon utiliser une boucle pour chaque page en ayant au préalable extrait la partie fixe de la partie variable de leur URL …
    Je suis bien conscient de cela, mais c'est bien mon problème que j'essaie en vain d'expliquer.....

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Récup par Excel d'éléments de la page web active et pilotage Fichier journal Word
    Par Rando31 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/12/2014, 18h14
  2. Récup des map du Web.xml
    Par geforce dans le forum JSF
    Réponses: 3
    Dernier message: 20/06/2012, 09h28
  3. Récup code autre page web mais coté client
    Par Invité dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 25/10/2009, 12h07
  4. Réponses: 3
    Dernier message: 09/05/2007, 10h49
  5. stockage infos fichier: récup avec applic web?
    Par cortex024 dans le forum Windows
    Réponses: 1
    Dernier message: 30/01/2007, 11h43

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