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 :

Manipuler IE sous VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut Manipuler IE sous VBA
    Bonjour,

    J'en suis à mes premiers balbutiements avec IE et je sais qu'il y a plusieurs connaisseurs ici...

    J'essaie de cliquer un bouton qui est une image, mais n'y arrive pas...
    Je me dis que je vais utiliser le lien href, mais n'y arrive pas plus...
    Quelqu'un saurait me sortir de là ?

    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 ImportMSC()
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim Texte As HTMLInputElement
        Dim Lien As HTMLAnchorElement
        Dim strURL As String
     
        strURL = "https://www.msc.com/usa/help-centre/tools/track-a-shipment"
     
        IE.navigate strURL
        IE.Visible = True
     
        WaitIE IE
     
        Set IEDoc = IE.document
     
        Set Texte = IEDoc.getElementById("ctl00_ctl00_plcMain_plcMain_TrackSearch_txtBolSearch_TextField")
        Texte.Value = "TTNU8456994"     'fonctionne bien
     
        Set Lien = IEDoc.anchors.Item("Search")
        For Each Lien In IEDoc.anchors
            If Lien.ID = "ctl00_ctl00_plcMain_plcMain_TrackSearch_hlkSearch" Then
                Lien.Click  'le code se rend mais ne fonctionne pas. En plus il efface le texte entré auparavant.
                Exit For
            End If
        Next
     
        Set IEDoc = Nothing
        Set IE = Nothing
    End Sub
     
    Sub WaitIE(IE As InternetExplorer)
       Do Until IE.readyState = READYSTATE_COMPLETE
          DoEvents
       Loop
    End Sub
    merci d'avance

  2. #2
    Expert éminent
    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
    Par défaut
    Bonjour !

    La page nécessite juste d'activer le champ comme lors d'une saisie manuelle (ligne n°8) :

    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
    Sub DemoIE()
        With CreateObject("InternetExplorer.Application")
            .Navigate "https://www.msc.com/usa/help-centre/tools/track-a-shipment"
            .Visible = True
            While .Busy Or .ReadyState < 4:  DoEvents:  Wend
            With .Document
                With .all("ctl00_ctl00_plcMain_plcMain_TrackSearch_txtBolSearch_TextField")
                     .Focus
                     .Value = "TTNU8456994"
                End With
                     .all("ctl00_ctl00_plcMain_plcMain_TrackSearch_hlkSearch").Click
            End With
    '            .Quit
        End With
    End Sub
    Testé sous Seven & IE9 en late binding

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Excellent Marc-L
    J'avais bien cherché un SetFocus, mais n'avais jamais remarqué le Focus...

    Merci beaucoup, je vais pouvoir avancer

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour tout les deux

    Marc c'est un peu le soucis avec ie en anonyme il faut jérer le focus
    tandis qu'en object déclarer ca n'est pas le cas

    with createobject("internetexplorer.application")........' focus a gérer

    dim ie as object
    set ie=createobject("internetexplorer.application")
    pas de focus a gérer

    j'avais remarqué cela en bossant sur ta discution (contribution sur la boucle d'attente sur le length je ne sais pas si tu t'en souvient

    donc : toujours en late binding

    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
    Sub ImportMSC()
        Dim IE As Object
        Dim IEDoc As Object
        Dim strURL As String
        Set IE = CreateObject("internetexplorer.application")
        strURL = "https://www.msc.com/usa/help-centre/tools/track-a-shipment"
        IE.navigate strURL
        IE.Visible = True
        Do: DoEvents:: Loop While IE.readyState <> 4 Or IE.busy
                Set IEDoc = IE.document
                With IEDoc
                    .all("ctl00_ctl00_plcMain_plcMain_TrackSearch_txtBolSearch_TextField").Value = "TTNU8456994"
                    .all("ctl00_ctl00_plcMain_plcMain_TrackSearch_hlkSearch").Click
                End With
     
                Set IEDoc = Nothing
                Set IE = Nothing
    End Sub
    bref le set visiblement change certains parametre
    il y a aussi quelques différences de comportement quand on utilise les refrence
    dim IE a new internetexplorer
    donc conclusion préférer le late binding et declarant l'object

    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent
    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
    Par défaut Heu là ‼

    Salut Patrick !

    Ton code ne fonctionne pas de mon côté sous Seven & IE9 …
    Et c'est aussi la raison pour laquelle je ne m'embête pas à déclarer des variables objets inutiles.

    Mais peut-être fonctionnera-t-il chez parmi, attendons son retour …

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir marc

    fonctionne til avec ".focus" en plus?????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. manipulation de IE sous VBA (transféré du forum Contribuez)
    Par PhilippeF75 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/05/2015, 00h09
  2. Manipulation de rapport sous VBA
    Par zoulou153 dans le forum VBA Access
    Réponses: 1
    Dernier message: 01/04/2013, 17h02
  3. Réponses: 8
    Dernier message: 07/10/2004, 11h08
  4. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/07/2004, 16h07
  5. Syntaxe PARAMETERS pour requête sous VBA
    Par GAGNON dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/11/2003, 11h39

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