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

Contribuez Discussion :

[Article] Manipulation d'Internet Explorer via VBA


Sujet :

Contribuez

  1. #101
    Candidat au Club
    Homme Profil pro
    ingénieur finance
    Inscrit en
    octobre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ingénieur finance

    Informations forums :
    Inscription : octobre 2017
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Génial
    Merci Qwazerty pour cet excellent tuto !!!
    Cela m'a permis de faire déjà tellement de chose que je n'arrivais pas à faire sans...

    Ce tuto est vraiment excellent !!!

  2. #102
    Membre à l'essai
    Homme Profil pro
    Consultant en finance
    Inscrit en
    décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2017
    Messages : 14
    Points : 12
    Points
    12
    Par défaut MERCI !
    Un million de mercis pour ce tutoriel, un bonheur dans la forme (juste le bon rythme, drôle et efficace), il m'a ouvert des horizons enthousiasmants (je pratique vba depuis des années mais perds des heures depuis toutes ces années sur des recherches web que je ne savais pas automatiser).

    J'ai mis quelques-unes des réalisations que m'ont permis votre tuto en ligne sur mon site perso : lucwalraf.com
    Et je me suis permis de vous citer dans les remerciements :https://lucwalraf.com/a-propos/
    Si cela vous gêne n'hésitez pas à me le dire : je retirerai la mention bien sur.

    Encore merci à vous,

    Luc W.

  3. #103
    Membre à l'essai
    Homme Profil pro
    Consultant en finance
    Inscrit en
    décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2017
    Messages : 14
    Points : 12
    Points
    12
    Par défaut une question
    J'ajoute une question pour faire avancer le schmillblick : un cas où je cherche à lancer une recherche sur un site (équivalent au lancement d'une recherche sur Google explicité dans le tuto) mais ne trouve ni form ni bouton submit pour lancer la recherche.

    J'ai l'impression que la solution est donc de simuler une validation par la touche ENTREE au clavier mais n'y arrive pas en utiliser les commandes Sendkeys.

    Un exemple ci-dessous. Si quelqu'un a une idée, merci d'avance !

    Luc W.


    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
    Public Sub RechScipio()
     
    ' Déclare les variables du module
    Dim oNav2 As SHDocVw.InternetExplorer
    Dim oDoc2 As MSHTML.HTMLDocument
    Dim ChampInput As HTMLInputElement
    URLcible = "https://www.myfrenchstartup.com/fr/recherche-avancee"
    Set oNav = New SHDocVw.InternetExplorer
    oNav.navigate URLcible
    oNav.Visible = True
     
    ' Attend le chargement de la page
        Do Until oNav.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
    ' Renseigne le champ recherche
    Set oDoc = oNav.document   
    Set ChampInput = oDoc.all("startup_name")
    ChampInput.Value = "Scipio Bioscience"
     
     
    ''Tentatives infructueuses pour lancer la recherche
    ''ChampInput.SendKeys("~")
    ''ChampInput.SendKeys("~").send
    ''ChampInput.Value = "Alantaya" & ChampInput.SendKeys("~").send
     
     
     
    End Sub

  4. #104
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    15 379
    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 379
    Points : 12 514
    Points
    12 514
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    pour une question sur un probleme perso priere d'ouvrir un post dans le forum adequat ce post est une contribution

    en attendant pour ton soucis c'est normal pour profiter du moteur de recherche avancer il faut etre connecté
    donc il te faut remplir les login et password avant que la page t'affiche le input a remplir

    cependant tu a le moteur de recherche classique sans connection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub recherche()
    URL = "https://www.myfrenchstartup.com/fr/"
    Set ie = CreateObject("internetexplorer.application")
    With ie
    .Visible = True
    .navigate URL
    Do: DoEvents: Loop While .readystate <> 4
    With .document.getelementbyid("search_name"): .Value = "ALANTAYA": .Focus: End With
    With CreateObject("wscript.shell"): .SendKeys "{ENTER}": End With
    End With
    End Sub
    ET OUVRE UN POST !!!!!!
    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. #105
    Membre à l'essai
    Homme Profil pro
    Consultant en finance
    Inscrit en
    décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2017
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Bonjour,


    Mes plus plates excuses pour mon erreur de comportement : je suis nouveau sur le forum et comme c'est un sujet très proche de ceux traités dans le tuto j'avais pensé que ça avait un rapport. Autant pour moi.

    Et surtout merci pour la réponse, je vais essayer le code. Ce qui est sûr c'est que ce n'est pas un problème de connection au site : j'ai un compte, je m'y logge et même quand j'ai une session ouverte mes essais ne marchent pas. D'ailleurs, c'est assez logique : le fait d'avoir un compte ou pas ne joue pas sur le lancement de la recherche (qui est mon problème) mais sur le niveau de détails que renvoie la recherche.

    Une question qui me turlupine au passage : pourquoi lancer la recherche sur "ALANTAYA" ?

    Bonne journée,

    Luc

  6. #106
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    avril 2009
    Messages
    15 379
    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 379
    Points : 12 514
    Points
    12 514
    Billets dans le blog
    8
    Par défaut re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ''ChampInput.Value = "Alantaya" & ChampInput.SendKeys("~").send
    parce que c'est l'exemple que tu a donné
    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

  7. #107
    Membre à l'essai
    Homme Profil pro
    Consultant en finance
    Inscrit en
    décembre 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en finance
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2017
    Messages : 14
    Points : 12
    Points
    12
    Par défaut MERCI
    Youpi, ça marche !

    Je ne comprends rien à cette ligne mais c'est elle qui ouvre la porte magique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With CreateObject("wscript.shell"): .SendKeys "{ENTER}": End With
    Encore merci pour la réponse et pour l'aide.

    Bonne soirée,

    Luc

    PS : vu pour alantaya, j'avais oublié que je l'avais laissé dans les exemples non-aboutis.

  8. #108
    Nouveau Candidat au Club
    Homme Profil pro
    Release Manager
    Inscrit en
    août 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Release Manager
    Secteur : Finance

    Informations forums :
    Inscription : août 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Merci bcp AlainTech le "InternetExplorerMedium" fut ma délivrance. Par contre je ne comprends pas trop pourquoi la semaine dernière ma macro tournait du feux de Dieux avec InternetExplorer et bing cette semaine il a fallut que je debug ma macro et tu m'as apporté la solution

    Citation Envoyé par AlainTech Voir le message
    Bonjour à tous,

    Pour ceux qui reçoivent l'erreur (à partir de IE8)


    et, en debug, dans la fenêtre des variables locale ou des espions


    il y a 2 options:
    1. Early binding
      Remplacer
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set objIE = New InternetExplorer
      par
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set objIE = New InternetExplorerMedium
    2. Late binding
      Remplacer
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set objIE = CreateObject("InternetExplorer.Application")
      par
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Set objIE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")

  9. #109
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    août 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : août 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Récuperation de l'élément <button type
    Bonjour,
    Merci à Qwazerty pour ce tuto, ainsi qu'aux autres pour la richesse du forum.

    J'ai un petit souci sur la récupération des id HTML d'une page WEB.
    J'arrive à rentrer sur la page concernée (alteva Mission GMAO) avec mon identifiant et mot de passe à l'aide de la requete IEDoc.all avec le code HTML du style <input id=A22.
    Cependant après j'ai une balise de type <button type avec getElementById('z_zrl_2_A3_IMG')
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <button type="button" onclick="_PAGE_.A2.value=2;{_JSL(_PAGE_,'A4','_self','','');} " onmouseout="(document.getElementById('z_zrl_2_A3_IMG')||this).style.backgroundImage='url(/EMISSION_WEB/Tuile_ConsulDI.jpg)';

    Dois je utiliser simplement la fonction IE.document.getElementById("") ?

    Aussi je ne trouve pas le menu attributs comme dans le tuto, est ce que IE11 ne donne plus accès à cette information ?

    Merci d'avance
    Nom : image6.jpeg
Affichages : 399
Taille : 167,7 Ko

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

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

    Informations forums :
    Inscription : avril 2002
    Messages : 3 622
    Points : 8 087
    Points
    8 087
    Par défaut
    Salut
    Je n'ai pas accès à mon pc en ce moment.
    Le bouton ne semble pas avoir d'id ni de nom, il faut donc remonter dans l'arborescence de la page pour trouver un élément ayant un nom ou un id auquel faire référence pour arriver ensuite jusqu'au bouton via Child/ children par exemple.
    Le Getelementbyid que tu vois dans le code du bouton correspond à la recherche de l'image permettant de changer l'aspect du bouton sur survol de la souris.

    Pour le reste je ne peux pas apporter de réponse.

    Ce film de discussion étant fait pour traiter des problèmes liés au tutoriel et non à sa mise en oeuvre, peux tu ouvrir un autre fil de discussion sur le forum afin de ne pas surcharger le présent fil.
    Merci

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

  11. #111
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    mars 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : mars 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Juste une remarque : le lien de téléchargement du tutoriel au format ePub lance en fait le téléchargement d'un fichier ZIP contenant la version HTML.

  12. #112
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    février 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : février 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Bonjour,
    J'utilises effectivement cette méthode, qui fonctionne bien en général par contre je fais face à une page utilisant du angular.js et les infos dont j'ai besoin n'arrivent qu' après que IE.readyState = READYSTATE_COMPLETE et doc.readyState = "complete"

    Peut on attendre la fin du chargement du DOM à l'aide de l'événement DOMContentLoaded ?
    Voyez vous une autre solution ?
    Le problème dans ton cas ne viens pas de IE.readyState ou doc.readyState mais de IE.Busy
    Pendant un temps je l'ai intégré dans WaitIE ce qui à réduit sans faire totalement disparaître les bugs aléatoires.
    Mais cette après midi j'ai enfin trouvé la solution, c'est pas super propre, mais ça fonctionne !
    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
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub WaitIE(IE As InternetExplorer)
        Dim IEDoc As HTMLDocument
     
        Do While Not IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
        Set IEDoc = IE.document
        Do While Not IEDoc.readyState = "complete"
            DoEvents
        Loop
        Do While IE.Busy = True
            Do While IE.Busy = True
                DoEvents
            Loop
            Sleep 200 ' cette temporisation peut être augmentée si les bugs persistent
            DoEvents
        Loop
     
        Debug.Print IE.readyState
        Debug.Print IEDoc.readyState
        Debug.Print IE.Busy
    End Sub

  13. #113
    Candidat au Club
    Homme Profil pro
    ingénieur chercheur
    Inscrit en
    avril 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : ingénieur chercheur

    Informations forums :
    Inscription : avril 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut problème tuto action sur bouton IV-C&D
    Bonjour,

    En suivant les recommandations du tutoriel, très clair au demeurant, je me retrouve confronté à un problème d'incompatibilité de type pour la variable InputGoogleBouton... D'après l'inspection du code html de la page de google, le nom de la variable est actuellement "btnK". S'agit il d'un "vrai" bug ou une subtilité m'aurait-elle échappée?

    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
    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"
     
       '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
     
       'On pointe notre Zone de texte
       Set InputGoogleZoneTexte = IEDoc.all("q")
     
       'On définit le texte que l'on souhaite placer à l'intérieur
       InputGoogleZoneTexte.Value = "VBA Excel"
     
    'On pointe notre bouton
    Set InputGoogleBouton = IEDoc.all("btnK")
     
    'On simule un clic
    InputGoogleBouton.Click
     
       'On attend la fin de la recherche
       WaitIE IE
     
       'On libère les variables
       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
    Merci,

    Cordialement

  14. #114
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Comparaison de contenu
    Bonjour,

    Tout d'abord, un grand merci pour cet excellent tuto.

    Toutefois, mon espion sur l'objet IE ne renvoie rien pour Document.
    Comment cela se fait-il ?

    Merci d'avance pour votre aide.

    Nom : 2019-11-25_12h24_54.png
Affichages : 183
Taille : 19,1 Ko

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

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

    Informations forums :
    Inscription : avril 2002
    Messages : 3 622
    Points : 8 087
    Points
    8 087
    Par défaut
    Bonjour

    Merci de prendre le temps de lire les autres messages, la question a déjà été posée plusieurs fois.
    Il faut mettre le contenu de IE.document dans une variable de type htmlDocument et ensuite espionner cette variable.

    Je vous souhaite une bonne journé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

  16. #116
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Et une nouvelle fois merci et encore toutes mes excuses; j'aurais dû effectivement lire les posts plus haut, notamment le #77.

  17. #117
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2014
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Pourriez-vous, s'il vous plaît, expliciter davantagele paragraphe sur les Iframe, page 10: "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.

    N'y a-t-il en effet aucun moyen d'accéder, via VBA, à ces objets ?

Discussions similaires

  1. Manipulation d'Internet Explorer via VBA
    Par pegase33 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/04/2018, 09h49
  2. Probleme d'interaction avec Internet Explorer Via VBA
    Par ThaHardy dans le forum Access
    Réponses: 0
    Dernier message: 03/06/2015, 10h52
  3. Manipulation d'Internet Explorer via VBA
    Par jll13 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2013, 19h24
  4. probleme Manipulation d'Internet Explorer via VBA
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/03/2012, 20h36

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