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 :

Macro excel selectionner un élément (internet explorer)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Par défaut Macro excel selectionner un élément (internet explorer)
    Bonjour,
    Je me présente, je m'appel Romain et je suis étudiant en informatique. Je suis actuellement entrain d'essayer de developper une application pour automatiser une recherche de donnés sur un site afin de les mettres dans un tableau excel.

    Je me retrouve avec le code source suivant (qui fonctionne) mais la je suis face à un problème. Le site est très mal fait et aucune des balises n'a un id ou même un nom.
    J'essaye d'acceder au texte de cette facon la mais ca ne fonctionne pas.
    test = ie.document.body.div.div(5).div(2).Table.tr.td.Table.tbody.tr.td.p.Value (chemin trouvé avec firebug)
    Avez-vous une solution svp?

    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
        Set IE = CreateObject("InternetExplorer.Application")
     
        ' You can uncoment Next line To see form results
        IE.Visible = True
     
        ' Send the form data To URL As POST binary request
        IE.Navigate "http://arm"
     
     
        Do While IE.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
     
        IE.Document.getElementById("toValidateBySaLink").Click
     
            Do While IE.Busy
            Application.Wait DateAdd("s", 1, Now)
        Loop
    Merci de votre réponse.

  2. #2
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut re
    Ton sujet m'interesse, peux tu me donner le code source de ta page?
    J'ai un pb similaire sur une page à cause du balise de fin HTML qui est
    placée en plein milieu du code et donc je n'arrive pas à récuperer les autres éléments (bouton, texte...).

    Dis moi si c'est le même genre de problème?

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2
    Par défaut
    Bonjour,
    Je ne peux pas montrer mon code html mais le site est correctement fait. Ma question est juste est-ce qu'on peux acceder à l'élement souhaité par cette méthode.

    J'ai une nouvelle question : est-il possible de simuler un clique à un endroit précis de l'écran (en donnant une coordoné par exemple)?

  4. #4
    Membre confirmé
    Homme Profil pro
    developpeur
    Inscrit en
    Octobre 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2011
    Messages : 124
    Par défaut re
    Actives les librairies Microsoft internet explorer et Microsoft html object library

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim bouton As Object
    Dim Element As Object 
    Dim ligne As Object 
     
    Set Element= IE.Document.getElementsByTagName("INPUT")
     
    For Each bouton In Element
        If bouton.Value = "le nom du bouton afficher sur la page" Then
            bouton.Click
            Exit For
        End If
    Next bouton
    Et pour ta deuxieme question ce code fonctionne, je tiens le focus sur l'élément de mon choix et je simule un click.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Set Element = IE.Document.getElementsByTagName("a")
    appIE.Visible = True
     
    For Each ligne In Element
        If ligne.innerHTML = "le nom du bouton afficher sur la page" Then
        ligne.focus
        Application.SendKeys ("~")
        Do While appIE.Busy
        Loop
        Exit For
        End If
    Next ligne

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 117
    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 117
    Par défaut
    Salut

    +1 pour les librairies, mais du coup quitte à les référencer, autant les utiliser pour déclarer tes variables

    Pour activer les références, tu dois aller dans le menu de VBa, Outils -> Références... dans la liste tu trouveras les 2 références cité par lenovo49

    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
    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"
     
    'On attend le chargement complet de la page
    WaitIE IE
     
    'Affichage de la fenêtre IE
    Set IEDoc = IE.document
    IE.Visible = True
     
    'On pointe notre Zone de texte
    Set InputGoogleZoneTexte = IEDoc.all("q")
     
    'On défini le texte que l'on souhaite placer à l'interieur
    InputGoogleZoneTexte.Value = "VBA Excel"
     
    'On pointe notre bouton
    Set InputGoogleBouton = IEDoc.all("btnG")
     
    'On simule un clique
    InputGoogleBouton.Click
     
    'On attend la fin de la recherche
    WaitIE IE
     
    'On libere les variables
    Set IE = Nothing
    Set IEDoc = Nothing
    End Sub
    Voila un exemple simple.

    Pour ce qui est d'un site n'ayant pas d'idname sur ses éléments, il existe d'autre solution de recherche, mais sans voir le code source :s ça va pas être facile.
    Pour t'aider, utilise un espion sur la variable IEDoc et regarde sa structure, tu devrais pouvoir y trouver des équivalents au chemin que tu précises dans ton 1er message, en utilisant les méthodes "all", "childnodes",...
    Il est aussi possible que les éléments soit distingué par leur ClassName, si c'est le cas j'ai fais une fonction qui permet d'en sortir la liste (c'est une ébauche de fonction, il faut que je la termine, elle fonctionne partiellement).

    Toujours pour te facilité la vie, les explorateur internet récents fournissent des explorateur d'élément regarde sur Ie par exemple, il te permet d'analyser le code de ta page.


    Bon courage.
    ++

    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

Discussions similaires

  1. Comment lancer une macro excel en selectionnant une cellule?
    Par itony dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/03/2008, 10h08
  2. ouvrie une page internet dans Internet Explorer depuis EXCEL
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2007, 00h50
  3. [Macro excel]selectionner une ligne à partir d'une recherche
    Par heavenly dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/04/2007, 16h26
  4. [VBA-E] Internet Explorer dans Excel ?
    Par iButton dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/01/2007, 19h13
  5. piloter Internet Explorer depuis excel
    Par biggione dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/08/2006, 15h36

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