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 :

Pilotage Internet Explorer


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Pilotage Internet Explorer
    Bonjour,

    Le Tutoriel "Interaction avec Internet Explorer" m'a permis de faire mes premiers pas dans le pilotage d'IE.
    J'en suis au stade ou j'arrive à me connecter à un site web via le code suivant :

    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
    Sub xxx()
    Const READYSTATE_COMPLETE = 4
    Dim IE
    Dim elementHtml As Object
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = True
    With IE
    .Navigate "https://www.xxxxxx
    Do Until .readyState = READYSTATE_COMPLETE 'on attend jusqu’à ce que la page soit chargée
    DoEvents
    Loop
    End With
    Set elementHtml = IE.Document.getElementById("Ident") 
    elementHtml.Value = "1234567890"
    Set elementHtml = IE.Document.getElementById("MDP")
    elementHtml.Value = "AZERTY"
    Set ObjectIE = IE.Document.getElementById("Valider")
    ObjectIE.Click
    End Sub
    Cette première étape me dirige vers une nouvelle page ou je souhaite simuler un click sur un lien particulier. Ci-joint, le source de la page, quelques commentaires et un grand merci pour votre aide.

    Jack

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    Pas de lien vers la page web !
    Cdt

  3. #3
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Jusque la OK, mais quelle est la question?

    N'oublie pas d'attendre la fin du chargement avec une boucle d'attente (voir l'utilisation de la fonction WaitIE dans mon tutoriel, ça allège le code) une fois l'action .click effectuée.

    ++
    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

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Pilotage IE
    Bonjour,

    La question est dans la pièce jointe. Merci.

    Cordialement.
    Jack
    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Re,

    Ci-joint une nouvelle pièce avec fragment de la page WEB. Merci.

    Jack
    Fichiers attachés Fichiers attachés

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    Le plus simple c'est de faire une boucle qui va aller chercher le links et appuyer dessus
    un code de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim lien_lcl as  As HTMLLinkElement
     
    i=0
    Set IEDoc = IE.document
    Set lien_lcl = IEDoc.Links(i)
                For i = 0 To IEDoc.Links.Length - 1
                    If IEDoc.Links(i).innerText = "UaUniversMonEspace"
                          IEDoc.Links(i).Click
    Exit for
                    End if
                 Next i
    While IE.readyState <> READYSTATE_COMPLETE Or IE.Busy = True
        DoEvents
    Wend
    cdt

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Pilotage IE
    Merci Maxgad pour ton aide mais ta proposition ne donne pas de résultat. J'ai mis un espion sur IEDoc. Voir la pièce jointe.
    Cdlt
    Fichiers attachés Fichiers attachés

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    bonjour,
    Alors, est ce que tu as plusieurs frames ?
    NB: Le tutoriel de notre ami Qwazerty explique bien ce que ca veut dire Frame
    Cdt

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Pilotage IE
    Bonjour,

    Oui, je pense qu'il y a plusieurs Frames. Voir pièce jointe.
    cdlt
    Fichiers attachés Fichiers attachés

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    Difficile de te dire exactement la bonne Frame faute de tests
    Le problème c'est que tu dois te pointer sur la bonne frame pour rechercher le lien sur le lequel tu veux cliquer
    Exemple, si tu veux te pointer sur la premiere frame:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim helem As Object
    Set helem=IeDoc.frames.Item(0)....
    le seule moyen de le trouver c'est en utilisant l'espion sur helem
    Cdt

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Re,

    A la vue du source, je pense qu'il y a 2 frames.

    Re,

    Ok, mais si je pointe vers le bon frame, comment rechercher le lien ?

    Cdt

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Oui au vu de ta 1ere piece jointe en effet le site est contenu dans une frame, ce quirisque de poser problème.

    Le Link que tu veux pointer à un Id, donc tu dois pouvoir le pointer directement comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim MonLien As HTMLLinkElement
    Set MonLien = IEDoc.Links("UaUniversMesComptes")
    Tu places un espion sur Monlien, s'il ne contient rien, c'est le frame qui pose problème.

    S'il contient un objet, tu utilises la methode .Click de Monlien.

    ++
    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

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Pilotage IE
    Bonjour,

    En mettant un espion sur helem, je trouve 30 item. Sur l'item 24 je "vois" ce que je cherche à savoir "UaUniversMesComptes" mais comment, maintenant, simuler le click ? (voir pièce jointe)

    Merci.
    Cdt
    Fichiers attachés Fichiers attachés

  14. #14
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    As tu tenu compte de mon message précédent?

    Remet ton nouveau code en entier (ton code VBA), que l'on parle de la même chose.

    Dans la discution liée à mon tutoriel, tu trouveras également des informations, plusieurs personnes ont des problèmes avec certains sites contenant des Frames (y compris moi d'ailleurs...).
    J'ai mis dans un des messages un fichier excel, qui n'est autre qu'une version 2 du fichier inclu dans le tutoriel, contenant en plus un module permettant de lister le contenu d'un site web, histoire de facilité les recherches.

    [Edit]
    Je viens de remonter les messages j'en avais sauté quelques uns, je pense qu'en additionnant le code que t'as donné Maxgad et celui que je t'ai donné juste après, tu auras une solution fonctionnel.
    Puisque le contenu de ta frame est accessible (ce qui n'est pas toujours le cas malheureusement), ta variable helem doit contenu une propriéte Document qui elle même contient une méthode links que tu pourras utiliser pour pointer sur le lien comme je te l'indique.
    Il serait mieux de déclarer tes variables avec les bonne classe plutot que d'utiliser "object", ainsi tu aurais l'autocomplétion du code, c'est plus facile pour trouver les méthodes dont tu as besoin.
    [/Edit]
    ++
    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

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Salut Qwazerty,

    Merci pour ton aide. Cela va trop vite pour moi qui suis novice ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set helem = IEDoc.frames.Item(0).document.activeElement.all
    me renvoie 30 item mais aucun lien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set MonLien = IEDoc.Links("UaUniversMesComptes")
    ne contient rien

    Que veux dire : Il serait mieux de déclarer tes variables avec les bonne classe plutot que d'utiliser "object". Je ne comprends pas trop.

    Cdt

    Jack

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 84
    Points : 90
    Points
    90
    Par défaut
    Qwazerty veut dire de mettre à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    une des 2 versions équivalentes suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim IE As InternetExplorer
    Set IE = New InternetExplorer
     
    Dim IE As New InternetExplorer

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Bonsoir tous le monde, le forum,
    Déclarer les variables comme un objet revient à mettre les variables en type variant, c'est un terme global.
    Je pense que Qwazerty parle plutot de l'objet Link, il faudra trouver l'ID du link en l'occurence "UaUniversMesComptes".
    Essai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim helem As HTMLLinkElement
    Set helem = IeDoc.frames.Item(0).document.documentElement.getElementsByID("UaUniversMesComptes")
        'Clique sur le bouton "Valider"
        helem.Click
    ou alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim lien_lcl As HTMLLinkElement
     
    Set IeDoc = ie.document
    Set lien_lcl= IeDoc.frames.Item(0).document.documentElement.getElementsByID("UaUniversMesComptes")
     
    i = 0
     
    For i = 0 To 40 'ou la propriete length à trouver à l'aide de l'espion
    Set lien_lcl= helem.Item(0).document.Links.Item(i)
        If lien_lcl.innerText = "UaUniversMesComptes" Then
            lien_lcl.Click 
    exit for
    end if
    next i
    L'objectif de ces codes c'est de t'aider a manipuler les objet car les items ne sont visibles qu'a l aide d'un espion.
    Cdt

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Salut Maxgad,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set helem = IeDoc.frames.Item(0).document.documentElement.getElementsByID("UaUniversMesComptes")
    plante en erreur d'exécution 438 (Propriété ou méthode non gérée par cet objet)

    par contre,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set helem = IEDoc.frames.Item(0).document
    ne plante pas et me permet de voir l'espion helem que tu trouvera en pièce jointe.


    J'ai effectivement du mal à manipuler les objets. Merci pour ton aide.

    Cdt
    Fichiers attachés Fichiers attachés

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Pilotage IE
    Salut Maxgad,

    Je suis enfin parvenu à mes fins en "pointant" sur le 25 ième item avec :

    Set helem = IEDoc.frames.Item(0).document.activeElement.all(24)
    helem.Click

    Je ne sais pas si c'est trés orthodoxe mais ça fonctionne.

    J'envisage de procéder de la même manière pour la page suivante. J'aurais besoin de ton aide pour trouver la bonne frame.

    Je te joins le source de la page sachant que c'est le lien "Téléchargement" qui m'interesse.

    Merci.
    Fichiers attachés Fichiers attachés

  20. #20
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 50
    Points
    50
    Par défaut
    Bonjour,
    Le problème avec cette méthode c'est que tu n'est pas certain que le item 24 contiendra toujours ton lien "UaUniversMesComptes". c'est pour cela que la boucle est importante
    essai çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    i=0
    Set helem = IEDoc.frames.Item(0).document.activeElement.all(i)
    For i = 0 To helem.documentelement.all.length ‘ou 40 si ca ne fonctionne pas
        If helem.innerText = "UaUniversMesComptes" Then
            helem.Click 
    exit for
    end if
    next i
    Cdt

Discussions similaires

  1. Pilotage Internet Explorer
    Par itwoo dans le forum Macros et VBA Excel
    Réponses: 333
    Dernier message: 13/11/2015, 10h55
  2. Réponses: 193
    Dernier message: 13/12/2014, 07h48
  3. [XL-2010] Pilotage Internet explorer contenant javascript depuis excel
    Par anthony14123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2013, 15h08
  4. Pilotage Internet Explorer
    Par bolof dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/09/2012, 21h25
  5. [OLE] Pilotage internet explorer
    Par yaclo dans le forum MFC
    Réponses: 4
    Dernier message: 22/03/2005, 20h03

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