VBA erreur -2147417848

Bonjour,

Je commence à déprimer car je n'arrive pas à faire fonctionner ce pauvre petit bout de code :

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 Sub test()

    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    IE.navigate "Pas le droit de donner (boulot)"
    IE.Visible = True
    Sleep 6000
    Set IEDoc = IE.document

End Sub

J'ai tout le temps l'erreur -2147417848 sur la ligne Set IEDoc = IE.document

Et si par ex, je fais un sleep, puis, je demande la taille de la page IE.height.

J'ai la même erreur.

Je ne sais pas comment faire -_-

Si je fais sur google ou autre, ça marche très bien, mais quand je fais les sites sur lesquelles je dois faire (que je dois pas donner, je suis désolée ) ça ne marche pas.

Je ne peux même pas accéder au IE.readyState

Si vous connaissez un autre moyen de faire, je suis preneuse.

Je sais que c'est possible car un collègue à coder avec la librairie opentwebst lib et ça marche. Du coup, il y a un moyen, j'en suis sûre, il faut juste trouver (comment ça plus facile à dire qu'à faire ? :p )

Bref, je ne comprends pas l'erreur, est-ce parce que la page n'a pas le temps de charger ? Parce que......?

Merci de votre aide

Inoue

Yo,

Alors, je me réponds à moi-même car je pense avoir trouvé la solution.

Le problème vient du faite que la page est rechargée par le navigateur web.

Ce qui fait que ma variable ne contient plus rien. Comme la page n'existe plus.

Je me dis "oh le drame, je fais comment pour la récupérer ma page ?!!!!! Hé, récupérer ! J'ai une fonction qui fait ça dans mes cartons, pour vérifier que la page existe pas déjà !!!"

Donc, ma solution, (qui fonctionne pas très bien :p j'arrive pas à return ma page IE... ça, c'est juste mon incompétence x) )

Sub test2() 
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")

    Dim IEDoc As HTMLDocument
    IE.Visible = True

    IE.navigate ("Page web url")
    Sleep 2000 'Que la page est le temps de se charger    

    Dim IE2 As Object
    Set IE2 = CreateObject("InternetExplorer.Application")
    IE2.Visible = True
    IEDoc = rechercherPage("welcome") 'Je vais rechecher ma page grace à la fonction

End Sub

'Cherche si l'url d'une page correspond à la chaine de caractère envoyé
Function rechercherPage(nomPage As String) As HTMLDocument
    'Nécessite d'activer la référence
    '"Microsoft Internet Controls"
    'et
    '"Microsotf HTML Object Library"

    Dim trouve As Boolean
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    Dim IE_return As Object
    Set IE_return = CreateObject("InternetExplorer.Application")
    Dim winShell As New ShellWindows
    Dim maPageHtml As HTMLDocument
    'Initialisation

    trouve = False
    On Error Resume Next
    For Each IE In winShell

        Set maPageHtml = IE.document
        'MsgBox maPageHtml.url

        'MsgBox "page : " & maPageHtml.url & "  -Test : " & nomPage & "" & (InStr(maPageHtml.url, titre))
       If (maPageHtml Is Nothing) Then

       Else
            If (InStr(maPageHtml.url, nomPage) <> 0) Then
                IE_return = IE
                'MsgBox "page : " & maPageHtml.Title
                trouve = True 
                Set maPageHtml = Nothing
            Else
            End If

        End If
    Next
 rechercherPage = IE_return.document

End Function

Alors voilà, en espérant aider d'autres personnes ^^

Rechercher des sujets similaires à "vba erreur 2147417848"