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 SubJ'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
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 FunctionAlors voilà, en espérant aider d'autres personnes ^^