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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 confirmé
    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
    Par défaut
    Bonjour,
    Pas de lien vers la page web !
    Cdt

  3. #3
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    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 128
    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
    Membre averti
    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
    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
    Membre averti
    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
    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 confirmé
    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
    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
    Membre averti
    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
    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 averti
    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
    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

  9. #9
    Membre confirmé
    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
    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

  10. #10
    Membre confirmé
    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
    Par défaut
    Bonjour,
    Essai de faire des tests :
    IEDoc.frames.Item(0).document, remplace le 0 par 1 ou 2... et regarde avec l'espion si tu trouves la donnée que tu veux.
    CDt

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

    Désolé pour la latence

    Alors, je plussoie Maxgad sur c'est poste #18 et #20, c'est bien ce que je voulais dire.

    Pour ton problème sans la page dans les mains c'est pas facile, fait les essais suivants :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub Essai()
    'Déclaration des variables
    Dim IE As New InternetExplorer
     
    Dim IEDoc As HTMLDocument
    Dim IEDocFrame As HTMLDocument
    Dim LienTelOp As HTMLLinkElement
    Dim UneFrameSet As HTMLFrameSetSite 'Object
    Dim UneFrame As HTMLFrameElement 'Object
     
        'Chargement d'une page web Google
        IE.Navigate "www.xxx.yyy"
     
        'Affichage de la fenêtre IE
        IE.Visible = True
     
        'On attend le chargement complet de la page
        WaitIE IE
     
        'On pointe le membre Document
        Set IEDoc = IE.document
     
     
    '// Essai 1 Début
        'On essai de pointer le Frame "applicationPortalContent"
        Set UneFrame = IEDoc.all("applicationPortalContent")
        '-> Est ce que ça fonctionne?
    '// Essai 1 Fin
     
    '// Essai 2 Début
        'On pointe le FrameSet -> l'objet se rempli t il bien?
        Set UneFrameSet = IEDoc.frames(0) 'A verifier si le 0 est bien le FrameSet
     
        'On essai à partir du FrameSet (si tu as réussi à la pointer avant)
        Set IEDocFrame = UneFrameSet.document
        Set UneFrame = IEDocFrame.all("applicationPortalContent")
        '-> Est ce que ça fonctionne?
    '// Essai 2 Fin
     
    '// Essai 3, à faire si UneFrame contient bien le frame applicationPortalContent
     
        'On pointe l'objet document du frame
        Set IEDocFrame = UneFrame.document
        'On pointe le lien
        Set LienTelOp = IEDocFrame.Links("TtelechargementOp")
        '-> verifie que LienTelOp contient bien le lien
        LienOp.Click
        WaitIE IE
     
    '// Essai 3 Fin
    End Sub
    Place ton code VBA complet.

    Si la page que tu manipules est public et ne contient pas de données sensibles (je n'ai pas tout relu) donnes le lien.

    Si ça ne fonctionne pas, précise bien à quel étape.

    Concernant le FrameSet, j'ai gratter sur une page SharePoint au boulot cet aprem, le frame set semble être "transparent" donc l'essai 1 devrait fonctionner (du mois dans mon cas, ça a fonctionné).

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

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