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. #41
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Bonjour,

    A quoi sert le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TheURL = WinHttpReq.responseBody
    au IV.J ?

    Il n'est pas utilisé dans le code.

  2. #42
    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

    Sans doute une erreur de ma part lors de l'adaptation de la fonction, j'avoue ne pas me souvenir.
    J'ai peut-être fait des essais et cette ligne est resté par oubli.
    Essai le code sans elle et si tout fonctionne bien, tout est pour le mieux. A moins qu'elle force une initialisation quelconque je ne vois pas trop ce qu'elle apporte.

    Je viens de regarder le lien d'origine, cette ligne est déjà présente.

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

  3. #43
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut tabVide= Vide mais aussi tabVide = -1
    Bonjour,

    Tout d'abord merci pour ce tuto trés instructif...
    Il me semble qu'il y ait une petite modif à faire pour récupérer le n° d'évenement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'On récupère le n° de l'évènements ici n° 208
       Set htmlGeneric = IEDoc.body.all("event_num")
       strTmp = htmlGeneric.innerText
       '  : strTmp : "Evénement n° 208" : String
       i = InStr(strTmp, " ") 
       i = Len(strTmp) - i
       strTmp = Trim(Right(strTmp, i))
    Mais surtout est il possible de m'expliquer pourquoi certaine fois tabVide = Vide et parfois tabVide = -1
    tabvide = UBound(htmlTabElement) avec UBound(htmlTabElement)<l'indice n'appartient pas à la sélection> n'est pas reconnu de la même façon!!!
    en attendant voici la modif que j'ai faite...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       If Not tabvide = Vide Then
          MsgBox "Le LotoFoot est annulé"
          Set IE = Nothing
       Set IEDoc = Nothing
          IE.Quit
          Exit Sub
       End If
    car je n'ai pas réussi cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not (tabVide= Vide) or (tabVide= -1) then
    ...

    Merci

  4. #44
    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

    Merci pour ce retour.

    Pour ce qui est du numéro d'événement, je ne comprend pas ta remarque, l'événement 208 que tu sites correspond au numéro de l'événement sur lequel tu as travaillé, aujourd'hui c'est le 211, à l'époque de la réalisation du tutoriel le 114, je ne vois donc pas l’intérêt de citer la valeur de ce numéro, mais peut-être que je ne comprend pas ta démarche.

    Pour la valeur de TabVidessai de noté le contenu de htmlTabElement lorsque tu as la valeur "Vide" dans TabVide, pour moi UBound renvoi toujours une valeur numérique, "vide" ne correspond à rien pour moi en VBA, que représente-t-il pour toi? Est ce une variable ou une constante que tu initialises au début de ton code? A moins que tu ne parle de Empty?
    Voila le tutoriel écrit par Silkyroad concernant les tableaux, il y a de forte chance que je me soit inspiré de son code pour tester si ma variable tableau était vide ou non, par contre lui utilise IsEmpty au lieu d'une comparaison à -1.
    Je me demande si la Base utilisé ne jouerait pas un rôle... Désolé, ça ne me vient pas, je te donne une solution en fin de message pour me faire pardonner


    Je profite de ce poste pour signaler qu'une fonction GetElementByClassName existe dans l'objet HTMLDocument (IEDoc) entre autre... Pour ceux qui se demande pourquoi à l'époque j'ai créé ma propre fonction, je n'en sais rien, soit je suis passé à coté de cette méthode, soit elle n'existait pas dans la version que j'utilisais (j'ai la flemme de vérifier ).
    Toujours est-il qu'une méthode existe et qu'elle sera certainement plus performante que la mienne ! :p.


    Voila ce que donnerait le code en l'utilisant (attention au changement de type lors de la déclaration de htmlTabElement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '#### Match annulé? ####
    Dim htmlTabElement As IHTMLElementCollection 
     
        'On vérifie l'absence du ClassName d'élément "lotofoot_indispo"
        Set htmlTabElement = IEDoc.getElementsByClassName("lotofoot_indispo")
     
        If htmlTabElement.Length <> 0 Then
            MsgBox "Le LotoFoot est annulé"
            Exit Sub
        End If
    ++
    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

  5. #45
    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 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    Une autre alternative pour recupérer le code source d'une page
    regarde dans mes contribution (((C'EST ICI)))

    Au plaisir
    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

  6. #46
    Nouveau Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Besoin d'aide sur Tuto de Qwazerty
    Bonjour Qwazerty

    Tout d'abord un grand merci sur votre super Tuto, Interaction avec Internet Explorer via VBA Excel, que j'ai lu en long en large avec beaucoup d'intérêt et qui m'a apporté beaucoup de solutions.

    Je suis un bleu en VBA Excel, et je met les mains dedans pour un fichier d’analyse de course hippique que je suis en train de créer grâce au super outils Excel, néanmoins j'ai beaucoup d'information Internet à saisir d'où mon intérêt de macro pour exécuter ces importations.

    Au tout début pour ce faire, je me suis servi de macro simple grâce à l'importation de données à partir du web, jusqu'au moment ou cette solution ne pouvais plus être envisageable car les données que je devais importé sont sur une page avec identification.

    Du coup je suis tombé sur votre formidable Tuto qui m'a permis de me loggé et et importé mes données.

    Néanmoins je me trouve bloqué sur un problème que je n'arrive pas à résoudre malgré beaucoup de persévérance.

    En fait pour faire simple j'ai une feuille excel ou se trouve X courses avec leur liens.
    Ma macro doit aller récupérer chaque lien et sur ces chaque liens elle doit importer le pronostic de cette course dont je ne connaît par avance le nombre de cheval et doit écrire ce pronostic sur chaque feuille dont elle dépend (1 feuille pour une course), mes feuilles sont nommées 1,2,3,4,etc ..

    Mon problème la Boucle For Each me pose problème car elle garde comptabilisée la course précédente et du coup s’arrête prématurément avant la fin de toutes les courses avec une belle erreur d'execution '9' ( L'indice n’appartient pas à la sélection) , ce qui est tout à fait compréhensible puisque la boucle For Each est vide !

    C'est difficile a expliquer avec exactitude du coup je joint le fichier .
    Et je met le code :

    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
     
    Sub Pronostic_Geny_course1()
    'Methode qui ne fonctionne pas avec For Each
     
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
     
    'Nombres de courses de la journée
    nb_courses = Sheets("Courses").Range("A1").Value
     
    'Boucle pour toutel courses et donc de même les pages des courses
        For Course = 2 To nb_courses
    'Url Détail course de Geny
        Curl = Sheets("Courses").Range("B" & Course)
     
     'On ouvre la page Web
       IE.Navigate Curl
       IE.Visible = True
       Do Until IE.ReadyState = READYSTATE_COMPLETE
                DoEvents
            Loop
       Set IEDoc = IE.document
     
    Dim Pronostic As HTMLGenericElement
    Dim FavPronos As HTMLGenericElement
    Dim Test As Variant
    Dim Pronos() As IHTMLElement
     
        Set Pronostic = IEDoc.getElementById("prono_cnt")
        Set FavPronos = Pronostic.all(9)  'item 9 est = à item 9+1=10 de la class yui-u first
     
       Pronos = getElementsByClassName(FavPronos, "num", False)
     
      For Each Test In Pronos
            Ligne = Ligne + 1
            NCh = NCh + 1
     
        Sheets("" & Course - 1).Range("B1") = "Pronostics"
        Sheets("" & Course - 1).Cells(1 + Ligne, "B").Value = Pronos(NCh - 1).innerText
     
        Next
            Next Course
    End Sub
    Ce fichier contient deux boutons pour déclencher les macros, un avec For Each qui Bug à partir de l'ouverture de la 2 ème courses et l'autre avec boucle For To ... Une parade que j'ai trouvé et qui fonctionne grâce encore à votre Tuto et l'expression (On Error Resume Next) pour passer au delà de l'erreur que vous comprendrez tout de suite en regardant le code.

    Je vous remercie d'avance pour une réponse .
    Fichiers attachés Fichiers attachés

  7. #47
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2008
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2008
    Messages : 225
    Points : 155
    Points
    155
    Par défaut Peut-être une solution aux postes #28,#29
    Bonjour Qwazerty,

    Permettez-moi d'abonder dans le sens des autres lecteurs: Bravo pour ce tutoriel. Bien qu'un peu dur à digérer un dimanche matin.
    J'ai trouvé sur le net les deux sites suivants

    https://code.google.com/p/ff-activex-host/
    https://code.google.com/p/np-activex/
    Ils sont peut-être un début de solution au problème posé

    Harry

  8. #48
    Membre actif
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 411
    Points : 231
    Points
    231
    Par défaut
    Bonjour Qwazerty

    Merci pour ton commentaire, désolé de répondre si tardivement mais avant de te resolliciter j'ai fais des tests sur ta sub et sur une autre car le probléme semble identique!!!
    en rouge sont les remarques demandées...
    le n° d'événement n'a pas d'importance...
    sinon voici à quoi ressemble le tabvide en variable locale lorsqu'il ne marche pas (c'est comme si le tabvide n'était pas initialisé...mais cela ne se produit pas en F8 semble t'il(en démarche pas à pas ) ni même parfois en F5 si point d'arrêt avant dans la marge!!!
    : tabvide : Vide : Variant/Empty
    avec
    : htmlTabElement : : IHTMLElement()
    en cliquant sur le + : : <Aucune variable> :
    et donc
    UBound(htmlTabElement)=<l'indice n'appartient pas à la sélection>
    Peut être ne reconnait il pas funcElement à chaque fois...soit le tableau array??
    la même situation d'erreur se produit dans une autre sub suivant si F8 ou F5 servent à lancer la sub...de la même manière...
    Peut être faut il simuler un point d'arrêt avant ou un sleep (je ne sais pas trop trop) j'ai essayé
    sleep 100 aprés avoir mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    ca n'a rien changé...
    voici le code où l'erreur se produit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tabledata = htmlTagCol.Item(k)
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tabledata As HTMLTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set htmlTagCol = IEDoc.getElementsByTagName("table")
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim htmlTagCol As IHTMLElementCollection
    (parcours des différentes tables de la page web et choix de la table k en fonction de mot = htmlTagCol.Item(k).innerText
    parfois tabledata est bien intialisée et parfois non alors que c'est toujours la même table qui est lue!!! (erreur du même style que tabvide = -1 parfois et tabvide = vide parfois)
    Ca m'aiderai bien si une explication permettait d'éviter cette erreur ou tout du moins si cette erreur pouvait être contournée...
    PS: je vais regarder la facon de charger une table comme indiquée dans ton poste...

  9. #49
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour à tous,

    Je l'ai déjà mentionné dans de nombreuses discussion mais il me paraît utile de le dire ici.
    Même quand IE a terminé, il se peut que le Document (le contenu de la page) n'ait pas fini de se charger.

    Après chaque changement de page, il faut répéter la structure suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        WaitIE IE
        Set IEDoc = IE.document
        WaitDoc IEDoc
    avec les 2 procédures d'attente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub WaitIE(IE As InternetExplorer)
      Do While Not IE.readyState = READYSTATE_COMPLETE
        DoEvents
      Loop
    End Sub
     
    Sub WaitDoc(doc As HTMLDocument)
      Do While Not doc.readyState = "complete"
        DoEvents
      Loop
    End Sub
    Testé et retesté dans de nombreux contextes...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  10. #50
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Merci pour l'info. Pour l'instant ça a l'air de marcher mais je n'ai pas fait de test de robustesse (avec une mauvaise connexion internet).

    Autre sujet : Est-il possible par le code visual basic d'ouvrir un autre navigateur que IE pour travailler sur le Web ?

  11. #51
    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

    Arff, désolé pour le manque de suivi... je n'ai pas été alerté des nouveaux messages...

    Visiblement AlainTech à fourni pile poile ce qu'il faut, merci bien je ne connaissais pas cette méthode.

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

  12. #52
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour à tous,

    Pour ceux qui reçoivent l'erreur (à partir de IE8)
    Erreur Automation : L'objet invoqué s'est déconnecté de ses clients
    et, en debug, dans la fenêtre des variables locale ou des espions
    Automation errorThe interface is unknown
    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}")
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  13. #53
    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

    Cool, merci pour ces astuces.

    La clé "D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E" ne peut jamais varier dans la base de registre?
    J'ai regardé et en effet dans ma base de registre elle correspond bien à iexplorer, mais est-ce bien toujours le cas?

    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

  14. #54
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Chez moi je suis toujours sous Win XP et, de ce fait, je ne peux pas faire d'upgrade de IE au delà de la version 8. Chez moi donc cette clef correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "%ProgramFiles%\Internet Explorer\iexplore.exe" -startmediumtab
    ce qui semble bien être le but.

    En tout cas, ce code m'a sauvé au boulot où on vient de migrer vers Windows 7 et un IE plus récent.
    Les codes anciens perdaient le lien vers IE dès le .Navigate.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  15. #55
    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

    C'est parfait ça, j'avais des soucis au taff avec ça aussi, je testerai dès que j'ai un moment.

    Encore merci et je te souhaite de bonnes fêtes de fin d'année, bonnes fêtes à tous

    ++
    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. #56
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Suite à la demande de itwoo à propos d'un Frame, voici ce que j'ai pu retrouver dans mes archives:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      Dim objFrame As HTMLIFrame
     
        Set objDoc = objIE.document
        Do While Not objDoc.readyState = "complete"
          DoEvents
        Loop
     
        Set objFrame = objDoc.getElementsByName("page")(0)
        Do While Not objFrame.readyState = "complete"
          DoEvents
        Loop
    Dans mon cas, la frame avait pour nom "page".
    Un objet Frame a une propriété readyState comme un Document.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  17. #57
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Bonjour,
    Euh, c'était quoi la question de itwoo ?
    De mon côté, je n'ai toujours pas de solution au pb de l'attente du chargement d'une page Web (hormis la technique du sleep qui n'est pas très robuste)
    J'ai essayé le WaitIE, le WaitDoc évoqués plus haut.
    Ca ne résout pas totalement la question.

  18. #58
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Il s'agissait de l'attente du remplissage d'une partie de la page qui est, en fait, un Frame.
    Il est possible de contrôler le ReadyState d'un Frame tout comme pour IE et le Document.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  19. #59
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2002
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci à AlainTech pour la résolution du problème (à partir de IE8)
    "Erreur Automation : L'objet invoqué s'est déconnecté de ses clients"
    En suivant ses recommandations mon problème a disparu...

  20. #60
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Qwazerty Voir le message

    Je n'ai pas plus d'info à propos de ce problème, j'ai un soucis "similaire" à mon travail, nous avons un programme intranet sur lequel on gère notre activité journalière. Le code du site semble généré dynamiquement à l'ouverture de la page, j'accède bien au code avec l'inspecteur de code de mon navigateur, par contre impossible d'y accèder via un code VBA...
    Par contre aucun message.

    En conclusion, tout ne semble pas faisable par cette méthode, j'esserai peut-être de faire plus de recherche sur le sujet en regardant sur la page de ma banque si le même problème apparait (mais c'est pas pour tout de suite désolé ).

    ++
    Qwaz
    Bonjour

    Ne serait-il pas possible de contourner le problème? Existe-t-il une commande VBA pour faire une action similaire à Crtl+A Ctrl+C sous internet explorer. Si c'est le cas on peut s'en servir pour copier collé le contenus d'une page web dans une feuille excel et après le retravailler avec une macro.

    Cordialement
    Fabian

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