VBA - piloter une page internet explorer à partir d'Excel

Victoire

XLDnaute Nouveau
Bonjour à tous,

Je vous contacte car j'ai le problème suivant: je souhaite, à partir d'un fichier excel, aller récupérer des informations sur un site internet où il faut que je me logge avec un nom d'utilisateur et un mot de passe. J'ai quelques notions de VBA, mais je n'y connais pas grand chose, j'ai trouvé quelques codes sur internet que j'essaie d'adapter, j'arrive à ouvrir la page web en question, mais impossible de m'y logger. j'ai toujours la même erreur qui revient, en rouge dans le code ci-dessous :

Sub recherche()
'déclaration des variables
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim InputLogin As HTMLInputElement
Dim InputPassword As HTMLInputElement
Dim Inputconnexion As HTMLInputElement
Set IE = New InternetExplorer

'ouverture du site'
IE.Navigate2 "http://www.(siteinternet)"

'la fenêtre IE s'ouvre'

Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop

IE.Visible = True

Set IEDoc = IE.Document

'on sélectionne "Login"
Set InputLogin = IEDoc.all("Login")
'on insère le login'
InputLogin.Value = "nomutilisateur"

'on sélectionne "password"
Set InputPassword = IEDoc.all("Password")
'on insère le login'
InputPassword.Value = "motdepasse"
Set Inputconnexion = IEDoc.all("btLogin")
Inputconnexion.Click
IE.Visible = True

Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
Set IE = Nothing
Set IEDoc = Nothing

End Sub



J'obtiens l'erreur d'exécution '-2147023179 (800706b5), "Erreur Automation Interface inconnue".
J'ai bien activé les références Microsoft HTML Object Library, Microsoft Internet COntrols..

Je ne parviens pas à trouver mon erreur.

Pouvez-vous m'aider? et dites moi si je ne suis pas assez claire.
En vous remerciant d'avance

Victoire
 

david84

XLDnaute Barbatruc
Re : VBA - piloter une page internet explorer à partir d'Excel

Re, bonjour Pierrot,
si ta page Internet s'affiche, c'est qu'elle a passé le cap de IE.ReadyState = 4 (IE.ReadyState = 4 et IE.ReadyState = ReadyStateComplete, c'est la même chose), puisque IE.visible est placé après.

Quand tu lances ton code en pas à pas, à quelle ligne plante-t-il ?
Pourquoi IE.visible est placé à 2 endroits différents ?

Pas clair ton histoire...je pense qu'un ficher test s'impose, ne serait ce que savoir sur quel code on travaille et pour pouvoir le tester en pas à pas parce que entre le tien, celui de camarchepas et celui de Pierrot, je ne sais pas lequel tu testes.
A+
 

Victoire

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Merci de toutes vos réponses!!
En fait, je viens de tester ma macro chez deux collègues... chez eux, elle marche très bien (aucun bug, la page internet s'ouvre et se loggue sans problème!!)
et j'ajoute que j'ai les mêmes versions d'Excel et d'IE qu'eux...

Donc il doit y avoir un problème chez moi.... mais je ne vois toujours pas :(
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : VBA - piloter une page internet explorer à partir d'Excel

Bonjour à tous,
le code testé fonctionne chez moi sans possibilité de connection bien entendu.
Lorsque tu lances le code, la page internet s'affiche t-elle ou pas ?
Quelle est ta version d'Internet Explorer ?
A+

Bonjour

La procedure de Pierrot fonctionne correctement ouverture de IE et de la page internet restant sur le login et le mot de passe
 

Victoire

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Rebonjour à tous,

Ca y'est, j'ai trouvé!! en fait il y avait une option dans mon internet Explorer qui faisait que mon code ne marchait pas:
la macro ne marche que si dans IE: outils / options internet/sécurité/activer le mode protégé (redémarrage d'Internet Explorer requis) n'est pas activé ! eh oui tout ça pour ça..

En tous cas, merci beaucoup encore pour votre aide!
Bonne fin de journée.
Victoire
 

camarchepas

XLDnaute Barbatruc
Re : VBA - piloter une page internet explorer à partir d'Excel

Victoire ,

Peut être un problème lié au pare feu , ou à une sécurité autre car, à lire le fil cela fonctionne sur au moins 3 postes différents .

As-tu essayé avec un autre site pour voir ?

Oups , pas rafraichi ma page , , j'avais pas vu les réponses ?

Mais c'est bien ce que je pensais
 

Milmar

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Bonjour, et merci aussi ça ma aider pour un problème similaire :)
la question que je me pose , c'est pas un peu risquer de faire cette manipulation ?
il n'y aurais pas plutôt des modifications à faire dans le menu Personnaliser le niveau ??
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - piloter une page internet explorer à partir d'Excel

Re,

Rebonjour à tous,

Ca y'est, j'ai trouvé!! en fait il y avait une option dans mon internet Explorer qui faisait que mon code ne marchait pas:
la macro ne marche que si dans IE: outils / options internet/sécurité/activer le mode protégé (redémarrage d'Internet Explorer requis) n'est pas activé ! eh oui tout ça pour ça..

En tous cas, merci beaucoup encore pour votre aide!
Bonne fin de journée.
Victoire

A noter, je viens d'exécuter sans problème la macro donnée post #12, et ce sans avoir désactivé cette sécurité.... Etrange tout ca, peut être lié également au proxy ou à l'anti virus.... A suivre....

bonne soirée
@+
 

princessepriscali

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Bnjour j'ai le même message d'erreur que toi Victoire mais c'est pas sur la ligne que tu as souligné. j ai corrigé sur cette ligne en mettant IE as New InternetExplorer

Je reviens sur ce message d'erreur deux ans après toi en espérant que tu t es mieux expertisé et que tu pourras m'aider. Je veux faire des recherches sur le site Siteweb.com selon certains paramètres qui sont dans les colonnes C, Q et R de mon fichier excel. LA MACRO Tourne bien sur plusieurs lignes mais çà s'arrête toujours au bout d'une dizaine de minute et m'envoie le message d'erreurerreur d'exécution '-2147023179 (800706b5), "Erreur Automation Interface inconnue"
et au débogage soit c'est la ligne 'ie.visible = False' qui est en jaune soit c'est la dernière boucle de DoEvents.

Malheureusement je ne peux joindre de fichier excel vu la confidentialité des information. Mais voici le code de ma macro

sub compar()

Dim r%
r = Selection.Row

Dim ie As New InternetExplorer
ie.Visible = False 'nonvisible sur l'ouverture du site'

ie.navigate ("https://www.google.fr/?gws_rd=ssl#q=" & "Siteweb.com " & Cells(r, "C") & " " & Cells(r, "R")) 'ouvrir directement google avec la recherche des tiers'
While ie.ReadyState <> 4 'en attente qu'il soit terminé'
DoEvents
Wend
Set dmt = ie.Document
Set tbs = dmt.all.tags("a") 'chercher tous les tags a (hyperlien)'
For i = 0 To tbs.Length - 1
If InStr(tbs(i), ".html") Then 'pour tous les tiers chez Siteweb.com, la forme formule toujours 9 chiffre nb Siren+.html
a = InStr(tbs(i), ".html") 'note la position du .html'
If IsNumeric(Mid(tbs(i), a - 9, 9)) Then 'vérifier les 9 caractères avant .html sont chiffres ou pas'
s1 = Mid(tbs(i), a - 9, 9)
Exit For 'normalement la première recherche google est le bon résultat, on fini cette macro pourvu qu'on trouve le SIREN'
End If
End If
Next

ie.navigate ("https://www.google.fr/?gws_rd=ssl#q=" & "Siteweb.com " & Cells(r, "C") & " " & Cells(r, "Q")) 'ouvrir directement google avec la recherche des tiers'
While ie.ReadyState <> 4 'en attente qu'il soit terminé'
DoEvents
Wend
Set dmt = ie.Document
Set tbs = dmt.all.tags("a") 'chercher tous les tags a (hyperlien)'
For i = 0 To tbs.Length - 1
If InStr(tbs(i), ".html") Then 'pour tous les tiers chez Siteweb.com, la forme formule toujours 9 chiffre nb Siren+.html
a = InStr(tbs(i), ".html") 'note la position du .html'
If IsNumeric(Mid(tbs(i), a - 9, 9)) Then 'vérifier les 9 caractères avant .html sont chiffres ou pas'
s2 = Mid(tbs(i), a - 9, 9) 'si oui, afficher ces 9 chiffres'
Exit For 'normalement la première recherche google est le bon résultat, on fini cette macro pourvu qu'on trouve le SIREN'
End If
End If
Next

If s1 = s2 And s1 <> vbNullString Then
Cells(r, "T") = s1
GoTo a
Else
ie.navigate ("http://www.Siteweb.com/cgi-bin/search?champs=" & Cells(r, "C"))

Do Until ie.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
Set dmt = ie.Document
Set tbs = dmt.all.tags("div")
For i = 0 To tbs.Length - 1
If InStr(tbs(i).innerhtml, Cells(r, "R")) > 0 And InStr(tbs(i).innerhtml, ".html") > 0 Then
arr = Split(tbs(i).innerhtml, "<A class")
For j = 0 To UBound(arr)
If InStr(arr(j), Cells(r, "R")) > 0 And InStr(arr(j), ".html") > 0 Then
a = InStr(arr(j), ".html")
If IsNumeric(Mid(arr(j), a - 9, 9)) Then
Cells(r, "T") = Mid(arr(j), a - 9, 9)
GoTo a
End If
End If
Next j
End If
Next i
End If


a: ie.Quit
Set tbs = Nothing
Set dmt = Nothing
Set ie = Nothing

End Sub

Sub recursif()
Application.ScreenUpdating = False
r = Selection.Row
l = Range("A1").CurrentRegion.Rows.Count
For Each c In Range("T" & r & ":T" & l).SpecialCells(xlCellTypeVisible)
c.Select
SIRENCOMPA
Next
Application.ScreenUpdating = True
End Sub
 
Dernière modification par un modérateur:

xlVba30

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Bonjour à tous,

Désolé de "déterrer" ce fil mais cela pourra peut-être servir à d'autres. L'erreur 800706b5 provient entre autres d'un trop grand délai dans le chargement des pages et "Do Until IE.readyState = 4 - DoEvents - Loop" ne change rien à l'affaire, car ce dernier à tendance à "rendre la main" un peu trop vite.

Pour contourner le problème, on peut utiliser le Sleep en prenant bien soin de déclarer "Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)" avant la procédure. Dans ce cas, "Sleep 1000" vaut 1 seconde.

Sinon il y a également l'instruction Application.Wait Time + TimeSerial(0, 0, 5) [(heure, minute , seconde). Ici 5 secondes de délai.]

Personnellement, j'ai eu une erreur 800706b5 et en ajoutant Do Until IE.readyState = 4 j'ai récupéré l'erreur 80010108. Après un certain temps à naviguer sur la toile et quelques centaines de jurons plus tard, en ajoutant une gestion des erreurs et en y glissant un "Sleep 6000", j'ai résolu le souci.

Bonne journée.
 

princessepriscali

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Bonjour à tous,

Désolé de "déterrer" ce fil mais cela pourra peut-être servir à d'autres. L'erreur 800706b5 provient entre autres d'un trop grand délai dans le chargement des pages et "Do Until IE.readyState = 4 - DoEvents - Loop" ne change rien à l'affaire, car ce dernier à tendance à "rendre la main" un peu trop vite.

Pour contourner le problème, on peut utiliser le Sleep en prenant bien soin de déclarer "Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)" avant la procédure. Dans ce cas, "Sleep 1000" vaut 1 seconde.

Sinon il y a également l'instruction Application.Wait Time + TimeSerial(0, 0, 5) [(heure, minute , seconde). Ici 5 secondes de délai.]

Personnellement, j'ai eu une erreur 800706b5 et en ajoutant Do Until IE.readyState = 4 j'ai récupéré l'erreur 80010108. Après un certain temps à naviguer sur la toile et quelques centaines de jurons plus tard, en ajoutant une gestion des erreurs et en y glissant un "Sleep 6000", j'ai résolu le souci.

Bonne journée.

Bonjour xlvba30
Merci pour ton poste qui n'est nullement en retard. Je suis actuellement entrain de tester ta solution.

S'il te plait tu entends quoi par "en ajoutant une gestion des erreurs et en y glissant un "Sleep 6000", ?
Est ce l'instruction "on Error Go to"?
 

xlVba30

XLDnaute Nouveau
Re : VBA - piloter une page internet explorer à partir d'Excel

Bonjour xlvba30
Merci pour ton poste qui n'est nullement en retard. Je suis actuellement entrain de tester ta solution.

S'il te plait tu entends quoi par "en ajoutant une gestion des erreurs et en y glissant un "Sleep 6000", ?
Est ce l'instruction "on Error Go to"?


Bonjour princessepriscali,

C'est exactement cela.

Sub Macro()


On Error GoTo error 'A placer après la déclaration des variables

(Instructions de la macro)

Exit Sub

error: 'Pour éviter de PLANTER au lancement d'IE parfois trop long ...
Sleep 5000
Resume

End Sub

Et depuis je n'ai plus ce genre de problèmes...
 

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof