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

  1. #1
    Membre du Club
    Erreur : Objet invoqué s'est déconnecté de ses clients
    Bonjour,

    Je me permets de vous contacter car je rencontre un problème, je suis bloqué :

    Voici mon problème :

    La page s'ouvre mais la macro bloque à l'instruction :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    'On attend le chargement complet de la page
     WaitIE IE


    Voici le message d'erreur (ligne en gras pointée) :
    Erreur d'exécution '-2147417848 (80010108)':

    Erreur Automation
    L'objet invoqué s'est déconnecté de ses clients.


    Voici mon 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
    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
    
    
    
    Sub navi()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputPLUZoneTexte As HTMLInputElement
    Dim InputPLUBouton As HTMLInputElement
    
       'Chargement d'une page Web 
       IE.navigate "http://www.lillemetropole.fr/index.php?p=284&art_id=11460"
       
       '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 InputPLUZoneTexte = IEDoc.all("rue")
    
       'On définit le texte que l'on souhaite placer à l'intérieur
       InputPLUZoneTexte.Value = "Rue Perrin"
    
       'On attend la fin de la recherche
       WaitIE IE
    
       'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub



    Avez-vous une idée du problème ? SVP

    Je vous remercie d'avance,

    THOMAS93

  2. #2
    Expert éminent sénior

    Bonjour,

    de mon côté, la page s'affiche puis survient ensuite une erreur 91 dans le code …

    Normal car l'objet de la ligne n°33 n'a pas été défini, à revoir !

    Penser au mode pas à pas via la touche F8 pour suivre la progression du code et trouver la source de l'erreur …

    Et concernant le VBA, il y a le sous-forum dédié Macros & VBA Excel

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre du Club
    Merci de ta réponse !
    Effectivement avec le pas à pas, j'ai une nouvelle erreur : Interface inconnue
    Il pointe la ligne :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
       IE.Visible = True


    Une idée ? :/

  4. #4
    Expert éminent sénior

    Dans les choux ! Au minimum fermer Excel sinon redémarrer l'ordinateur …

    Ensuite avant de programmer quoi que ce soit, regarder comment la page Web fonctionne
    car il serait logique de commencer par renseigner le nom de la commune !

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre du Club
    Je pense qu'il bug à l'attente du chargement complet de la page... !

    Pour moi, le problème se situe à :


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Do Until IE.readyState = READYSTATE_COMPLETE


    En effet, READYSTATE_COMPLETE est bien = 4
    Le problème serait donc sur IE.readyState avec toujours la même erreur L'objet invoqué s'est déconnecté de ses clients.

    Truc bizarre, si on essaye avec www.google.fr et non plus "rue" mais "q" comme dans le code de la page de google, tout fonctionne normalement !
    Je trouve ca bizarre.. Je suis perdu...

    Avez-vous une idée ? svp

  6. #6
    Rédacteur/Modérateur

    Salut

    A essayer, adaptation de la fonction d'une DLL perso

    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
    Private Function IeAtt(IeApp As InternetExplorer, Optional ByVal TempoReadyComplet As Double = 10.5, Optional AttenteDoc As Boolean = False, Optional ByVal TempoDocComplet As Double = 10.5) As Boolean
    '----- Attente d'un chargement complet suite à l'appel d'une page internet. -------
    'IeApp: Objet de type InternetExplorer
    'TempoReadyComplet: temporisation au delà du quel il est considérée que la connexion à échouée
    'AttenteDoc: attente de confirmation du chargement complet du document, False n'attend pas la confirmation, True attend la confirmation
    'TempoDocComplet: temporisation au delà du quel il est considérée que la récupération du document a échoué
    Dim TpFin As Double
    IeAtt = False
        TpFin = Timer + TempoReadyComplet
        Do While IeApp.ReadyState <> READYSTATE_COMPLETE
            DoEvents
            If Timer > TpFin Then IeAtt = True: Exit Do
        Loop
        If AttenteDoc = True And IeAtt = False Then
            TpFin = Timer + TempoDocComplet
            Do While IeApp.document.ReadyState <> "complete"
                DoEvents
                If Timer > TpFin Then IeAtt = True: Exit Do
            Loop
        End If
    'Si IeAtt = false, il n'y a plus à attendre, la connexion est un succès
    'Si IeAtt = True,
    '       soit IeApp.ReadyState a echoué ou bien
    '       si AttenteDoc = True et que precedement IeApp.ReadyState était égal à COMPLETE_READYSTATE , Document.ReadyState a echoué
    End Function
     
    Sub navi()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputPLUZoneTexte As HTMLInputElement
    Dim InputPLUBouton As HTMLInputElement
     
        'Chargement d'une page Web
        IE.navigate "http://www.lillemetropole.fr/index.php?p=284&art_id=11460"
        If IeAtt(IE, 10, True) = True Then
            MsgBox "Délais de récupération du document dépassé", vbCritical, "Votre attention"
            Exit Sub
        End If
        'Affichage de la fenêtre IE
        IE.Visible = True
        Set IEDoc = IE.document
       'On pointe notre Zone de texte
       Set InputPLUZoneTexte = IEDoc.all("rue")
    '................. suite du programme ...............
    End Sub
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.

  7. #7
    Membre du Club
    Salut !

    Merci de ton aide !
    Mais malheureusement, le problème est toujours là !
    Même erreur à la ligne :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Do While IeApp.readyState <> READYSTATE_COMPLETE


    De plus :
    Lorsque je place le curseur sur " READYSTATE_COMPLETE ", il est bien égal à 4.
    Par contre, lorsque je le place sur " IeApp.readyState ", il y est écrit : "le serveur distant n'existe pas ou n'est plus disponible" ou la même erreur qu'avant "l'objet invoqué s'est déconnecté de ses clients"

    As tu une idée ?

    Thomas93

  8. #8
    Expert éminent sénior

    PC dans les choux ou connexion trop lente car de mon côté la page Web se charge sans souci …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Expert éminent
    Salut

    Regarde dans le fil de discussion lié au tutoriel, AlainTech dans son message du 20/12/2013, 11h47 propose une solution à ces phénomènes de décrochages.

    [Edit]
    Je viens de tester ton code et je n'ai pas de soucis.
    [/Edit]

    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