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 :

[XL-2010] Tableau de HTML vers excel avec Macro


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut [XL-2010] Tableau de HTML vers excel avec Macro
    Bonjour à tous,
    il se trouve que j'essaye de récupérer des tableaux de données sur une page internet avec une macro pour les transférer dans un fichier excel. J'arrive à trouver les noms des tableaux dans ma page HTML mais je n'ai aucune idée de comment faire pour les transférer dans excel?
    J'ai bien sur eu l'idée d'ouvrir directement la page HTML dans excel mais la page est alors mal mise en forme...
    Les tableaux sont nommés de la facon suivante : nom1, nom2, ect...
    J'arrive à les récupérer dans des objets de type MSHTML.HTMLObjetCollection mais je ne sais pas comment marchent ces objets et je ne sais pas quoi en faire?
    J'utilise la fonction getElementsByName(nomdutableau) pour le récupérer
    Merci d'avance pour votre aide
    Arthur

  2. #2
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    sans avoir de lien sur une page Web ni savoir exactement les données à récupérer …

    Utiliser l'outil d'inspection intégré au navigateur pour chaque donnée à récupérer.

    Ensuite en mode pas à pas via la touche F8 sur une variable objet pointant directement sur un élément,
    consulter sa structure dans la fenêtre des Variables locales.

    Comme tout dans une page HTML est en texte, la propriété innerText contient souvent la donnée finale …

    Si l'élément est une table à lire !

    Rechercher aussi parmi les discussions de ce forum …

    Consulter aussi l'aide de l'objet QueryTable (Données, Nouvelle requête sur le Web), là aussi plein d'exemples sur le site …


    Citation Envoyé par arthurc02 Voir le message
    J'ai bien sur eu l'idée d'ouvrir directement la page HTML dans excel mais la page est alors mal mise en forme...
    Voir le tutoriel sur la manipulation des chaines de caractères en VBA …

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je sais que ce n'est pas évident sans le site mais il est prive et il demande un accès donc il n'est d'aucune utilité pour une personne du forum.
    Je vais creuser pour l'innertext mais ce que j'obtiens est vraiment difficilement compréhensible, en tout cas l'objet tableau mshtml. J'avais déjà essaye de repérer la structure avec les variables locales sans succès par contre je n'ai que peu regardé du cote de l'objet querytable je vais essayer de voir ça plus en détail.
    Pour la partie chaine de caractères, je n'aurais pas poster ici si je n'avais pas trouve quelque chose me convenant dans les tutos. Mon but étant vraiment d'utiliser la library mshtml (que j'utilise dans d'autre macro) jusqu'au bout et le plus proprement possible.

    Veuillez m'excuser pour les accents ou fautes impromptues j'écris de mon téléphone.

  4. #4
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut



    Ne reste plus que ceci; bon courage …

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Tout d'abord merci de l'aide.
    J'essaye d'utiliser l'objet QueryTables mais j'ai du mal. J'ai voulu tester cela :
    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
     
    With Sheets(1).QueryTables.Add(Connection:=Chr(34) + oDoc.URL + Chr(34), Destination:=Sheets(1).Range("A1"))
        .Name = "test"
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .BackgroundQuery = False
        .RefreshStyle = xlOverwriteCells
        .SaveData = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = True
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
        End With
    oDoc est ma page html provenant du navigateur avec la méthode .document

    Voici le style de page html, j'essaye de récuperer tout les tableaux compris dans les divs d'id="report_summary1" puis pareil "report_summary2", ect...
    Merci d'avance pour votre aide

    PS : J'ai ajouter la page html dans une archive car elle était trop grosse
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut


    Donc
    Citation Envoyé par Marc-L Voir le message
    Si l'élément est une table à lire !
    Il y a même un exemple dans une discussion récente !


    __________________________________________________________________________________________
    L'avenir n'appartient pas qu'à ceux se levant tôt mais surtout à ceux se donnant la peine de lire …

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je sais j'ai déjà regarder cela, sauf qu'il y a 15 pages html à regarder donc c'est un peu long et compliqué. Au final la meilleur solution serait d'ouvrir directement la page html dans une nouvelle feuille sous excel, or mon problème est que l'URL n'est valable que dans le navigateur qui est en cours, c'est à dire qu'un QueryTable ou autre méthode utilisant l'Url n'est pas valable. Je cherche à ouvrir la page html se trouvant dans mon navigateur (oNav As SHDocVw.InternetExplorer) directement dans Excel?
    Je ne trouve rien sur le net expliquant ou non la faisabilité de cette idée?

  8. #8
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Le code d'une table ne fait pas quinze pages !

    Suffit de regarder avec l'outil d'inspection intégré au navigateur !

    Boucler sur les tables (getElementsByTagName) puis en suivant les explications du lien …


    Sinon c'est aussi réalisable directement sur le texte en utilisant des fonctions de manipulation de texte …


  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Excusez moi mais si je ne le fait pas j'ai une raison, j'ai 15 pages d'internet à regarder qui sont toutes différentes donc je n'ai pas envie de devoir regarder la structure des 15 pages en html pour les parcourir surtout qu'elles ne sont pas simples et toutes différentes.
    Je voudrais enregistrer la page html pour après l'ouvrir avec excel.
    Pour l'enregistrer je voudrais utiliser quelquechose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim oNav As SHDocVw.InternetExplorer
    oNav.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DONTPROMPTUSER, "[chemin]\toto.mth", null
    malheuresement je dois avoir la mauvaise syntaxe et je n'arrive pas à trouver la bonne si quelqu'un à une idée?

    Le problème est simple je dois récupérer des infos sur 15 pages internet toutes différentes, et transmettre ces infos dans excel. Or je ne peux pas utiliser l'url des pages car celle ci ne sont pas disponible, je fais des recherches pour atterrir sur les différentes pages et les recherche ne sont pas disponibles pour d'autre personnes. Donc par exemple le système des QueryTable ne fonctionne pas.


    PS : Je n'avais peut être pas de compte sur developpez mais ca ne veut pas dire que je suis bête et que je ne suis pas capable de chercher des tutos et dans le forum, si je poste ici c'est justement que je n'arrive pas à trouver de solution me correspondant!

  10. #10
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Une table est une table (HTML), peu importe la page source !
    Tout comme la navigation à partir d'une URL ou d'un fichier HTML local !
    Idem pour QueryTable vu qu'il fonctionne aussi sur des fichiers texte …


    Problématique d'origine :

    Citation Envoyé par arthurc02 Voir le message
    récupérer des tableaux de données sur une page internet avec une macro pour les transférer dans un fichier excel.
    Une solution :

    Citation Envoyé par Marc-L Voir le message
    Boucler sur les tables (getElementsByTagName) puis en suivant les explications du lien …
    Exemple - facilement trouvable vu que c'est une discussion récente ‼ - de la structure d'une table dans la discussion
    Récupérer des données d'un site WEB et les collées sur une feuille Excel

    Exemple - parmi tant d'autres sur ce forum ‼ - d'exploitation du tutoriel en lien dans le post #4 du texte d'une page HTML
    dans la discussion Extraire l'ensemble des liens / URLs d'une page web


    Sans étude de la structure d'une page HTML, pas de programmation possible, de la rigueur est requise !
    Sujet clos de mon côté …

    __________________________________________________________________________________________
    Il n'y a pas que les aigles qui atteignent les sommets, les escargots aussi mais ils en bavent !

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    La situation devient comique...
    J'ai justement fait évoluer ma problématique, j'aurais peut être du faire plus attention au début en précisant mieux mon sujet.
    Dois-je rouvrir un post avec mon exact problématique?
    Car j'ai très bien compris votre solution et excusez moi mais j'y avais déjà penser avant de poster sur le forum, encore une fois je ne suis pas débile je suis tout à fait au courant de ce que l'on peut faire, aussi bien en parcourant les objets de d'une page html ou même en prenant le contenu de la page dans un string.
    Ce que je veux maintenant, c'est automatiser l'enregistrement de la page html à partir d'un navigateur? Auriez vous une solution?
    Merci

  12. #12
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Comme expliqué pourtant dans le tutoriel, la ligne n°7 du code du post #2 du deuxième lien de mon précédent message
    affecte à la variable T le texte de la page HTML …
    Au cas où pour sauvegarder du texte dans un fichier, en dehors de la consultation de la
    et de l'aide VBA intégrée concernant l'instruction Print # par exemple,
    voir aussi le tutoriel Manipulation des fichiers en VBA

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Comme j'essaye de l'expliquer depuis 3 ou 4 posts, ça je sais le faire c'est justement ce que je ne veux pas faire...
    Je ne comprends pas votre entêtement à vouloir me faire faire des choses dont j'ai expliqué clairement que je ne voulais pas faire.
    Personnellement il me semble logique qu'enregistrer les pages html directement pour les ouvrir avec excel, est plus simple et plus rapide et surtout applicable a n'importe quelle page que de devoir étudier toutes les pages que l'on souhaite importer.
    Bref si je n'ai pas de solution pour effectuer ça, je me contenterais de ce que je savais déjà c'est à dire regarder la page html plus particulièrement.

  14. #14
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut


  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Bon ba j'ai utilisé la méthode classique avec l'html, c'est pas mal mais c'est un peu long...
    Merci de l'aide mal grès tout

  16. #16
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut


    Long comment ?

    Avec ma méthode - pourtant fournie et détaillée ! - c'est moins d'une seconde, quasi instantané ‼

    Où est le code ?



  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Non mais comme j'ai quinze pages internet c'etait un peu long a mettre en place car j'ai eu quelques bugs sur certaines pages..
    Mais sinon ca tourne, j'ai d'autres soucis maintenant ^^

  18. #18
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut



    A partir de ta page en pièce jointe, une vingtaine de lignes de code et 4 dixièmes de secondes
    pour récupérer les cinq tables avec un i5 à 2.5GHz.


    A partir d'une URL, si le serveur n'est pas à la ramasse, ce serait quand même moins d'une seconde …

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

Discussions similaires

  1. Exporter Tableau Html vers Excel en UTF-8
    Par Steufa dans le forum jQuery
    Réponses: 6
    Dernier message: 15/08/2014, 12h24
  2. [Excel] Exportation tableau html
    Par Dakuan dans le forum Bibliothèques et frameworks
    Réponses: 16
    Dernier message: 17/09/2008, 21h19
  3. Insérer une feuille Excel avec macro dans une page HTML
    Par Pakkaï dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/12/2006, 18h40
  4. Réponses: 13
    Dernier message: 12/09/2006, 15h32
  5. [VBA-A2003] Export d'un Recordset vers Excel, avec SQL statement
    Par Wanoo14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2006, 23h06

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