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 :

VBA et liens Internet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 19
    Par défaut VBA et liens Internet
    Bonjour,

    Je n'ai pas tout compris dans le tuto de Qwazerty, c'est pourquoi je sollicite un peu d'aide.
    J'essaie par exemple sur la page d'accueil de wikipédia de cliquer sur le lien HISTOIRE (lien qui ne comporte pas d'ID): <a href="/wiki/Portail:Histoire" title="Portail:Histoire">Histoire</a>
    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 IEViaVBAExcel2()
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim htmlTagCol As IHTMLElementCollection
    Dim Generic As HTMLGenericElement
     
       'Ouvre la page Web
       IE.navigate "http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Accueil_principal"
       IE.Visible = True
       WaitIE IE
       Set IEDoc = IE.document
     
       'On liste les éléments de type anchor
       Set htmlTagCol = IEDoc.getElementsByTagName("a")
     
       Set Generic = htmlTagCol.Item("Portail:Histoire")
       Generic.Click
     
     
       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
    Bien sûr Portail:Histoire n'est pas l'ID et donc cela ne fonctionne pas. Comment puis-je procéder? D'avance merci à tous.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 19
    Par défaut
    Voici ce que j'ai trouvé:
    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 IEViaVBAExcel7()
    Dim ie As New InternetExplorer
    Dim IEdoc As HTMLDocument
    Dim HtmlElementStandard As HTMLGenericElement
    Dim monlien As HTMLAnchorElement
     
       'Ouvre la page Web
       ie.navigate "http://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Accueil_principal"
       ie.Visible = True
       WaitIE ie
       Set IEdoc = ie.document
     
       ' "acceuil_titre" se trouve dans Item 77 (IEdoc --> all --> Item77)
       Set HtmlElementStandard = IEdoc.all(77)
       Set monlien = HtmlElementStandard.all(27)
       monlien.Click
     
     
       ' "Portail:Histoire" se trouve dans Item 28 (càd 27 sur page html)
       Set IEdoc = Nothing
       Set HtmlElementStandard = Nothing
       Set Generic = Nothing
       Set monlien = Nothing
     
     
    End Sub
    Ce code fonctionne mais existe-t-il une meilleure solution?

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Si tu veux aller vers le portail histoire, il suffit de naviguer vers
    http://fr.wikipedia.org/wiki/Portail:Histoire

    Comme l'indique le href.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 19
    Par défaut
    Il s'agit en fait d'un exercice pour comprendre le tuto de Qwazerty. Je souhaite naviguer d'une page à une autre. La méthode que tu me suggéres est naturellement plus facile mais est-elle toujours applicable? Peut-on toujours se passer des liens?

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 127
    Par défaut
    Salut

    Je suis d'accord avec AlainTech bien sur, il ne faut pas se braquer uniquement sur une technique. Je ne répondrais pas à ta question concernant l'utilisation du href car je ne suis pas vraiment spécialiste de la question .
    Néanmoins, comme je le dis dans le tutoriel, tu vas souvent développer une procédure qui te permet de récupérer un contenu situé dans un endroit connu, donc autant accéder à ce contenu au plus rapidement via des adresses précises.
    Dans le cas de l'historique Wiki, on peut parfaitement imaginer que Wiki décide de relooker sa page d'accueil et que le lien historique ne se trouve plus du tout au même endroit sur celle-ci. Quand bien même, il y aura de fortes chances que le lien vers l'historique, lui, reste le même.
    Dans un tel cas on voit bien que l'utilisation du lien historique te permettra d'accéder rapidement aux données et d'éluder des éventuels relookages de page d'accueil.

    Ceci dit je comprend ta démarche. Donc dans un cas comme celui, plutôt que de chercher l'élément par sa position dans le code, il est plus intéressant de remonter un peu dans la hiérarchie pour voir si un des éléments proches n'est pas plus facile à pointer.
    Dans ton exemple, c'est la cas, car tu trouveras facilement l'id "ca-history", un peu de navigation dans les childrens de cet éléments te permettra de pointer facilement le lien convoité.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 19
    Par défaut
    Un grand merci à tous les deux pour vos réponses et toutes mes félicitations à Qwazerty pour son formidable tuto.
    J'ai bien compris: à chaque fois que c'est possible, j'accède directement au lien par son url.
    Je ne ferme pas tout de suite ce sujet car je voudrais encore faire quelques tests. MERCI

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 19
    Par défaut
    Pour terminer avec les liens, je voudrais poser encore une question.
    Je viens d'accéder (avec pas mal de difficultés, c'est vrai) à un lien d'une balise iframe. La difficulté (comme tu le dis dans ton tuto est :"Le composant iFrame est utilisé pour afficher dans le corps d'une page une autre page Web indépendante. Cette page indépendante a beau être affichée, son contenu n'est pas accessible dans l'arborescence VBA, il faudra charger cette page dans une fenêtre de navigation pour interagir avec elle." Pour charger cette page, j"ai repéré l'adresse grâce à mes espions: iedoc --> all --> item12 --> all item58 --> all --> item18 --> ie8-src et donc dans mon code j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim item12 As HTMLDivElement
    Dim item58 As HTMLDivElement
    Dim item18 As HTMLIFrame
    et ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set item12 = IEdoc.all(11)
    Set item58 = item12.all(57)
    Set item18 = item58.all(17)
    Ma question, sans rentrer dans le détail du code, est de savoir si il existe un moyen plus directe d'accéder à item 58. all(17).

Discussions similaires

  1. lien internet avec VBA EXCEL
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/07/2007, 10h40
  2. Lien internet
    Par fourniey dans le forum VBA Access
    Réponses: 26
    Dernier message: 30/09/2005, 00h14
  3. [XSL] Lien internet
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 15/03/2005, 07h49
  4. [VBA-E] lien en VBA et fonction generatrice
    Par Smoke666 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/07/2004, 11h47

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