PILOTER INTERNET EXPLORER (OU UN WEBBROWSER) [RÉPONSE FORUM]
O Sensei
Messages postés13Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention 5 février 2009
-
25 août 2004 à 12:22
LEBRIOU
Messages postés13Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention17 mars 2013
-
12 déc. 2011 à 19:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
LEBRIOU
Messages postés13Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention17 mars 2013 12 déc. 2011 à 19:42
salut Renfield,
En effet,cette docu. est dense. je devrais y trouver ce que je cherche.
J'ai déjà pu profiter d'un de vos codes (Un explorateur de répertoires),il était aussi très bien documenté. je l'ai adopté et adapte dans un autre projet(qui est lui aussi en cours)
Encore merci pour cette réponse et pour l'aide.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 déc. 2011 à 06:56
évite le iDoc.All
utiliser le getElementById getElementsByName et getElementsByTagName
LEBRIOU
Messages postés13Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention17 mars 2013 9 déc. 2011 à 21:36
merci votre réponse rapide , mais je n'obtiens aucune aide pour cette référence même dans votre projet.
je découvre ce domaine de programmation qui correspond à un projet que je cherche à développer interagir sur une page HTML.
je cherche actuellement une aide pour ce type de commandes.l'explorateur d'objets en donne bien la liste
mais aucun détail ni sur leur fonction ni sur la syntaxe.Actuellement c'est grâce à des exemples comme les votre et quelques tâtonnements que
j'arrive péniblement à réaliser ce que je cherche à faire: par exemple changer (ou lire) la valeur d'une zone de saisie
je n'ai rien trouvé d'exploitable sur le site de microsoft (mais j'ai peut être mal chercher)
En bidouillant, j'ai pu énumérer et lire les options d'un listebox:
de la forme: <option value="IRL" title="irlande">irlande</option>
Dim iDoc As IHTMLDocument2
For I = 0 To iDoc.All.tags("option").length - 1
Texte = iDoc.All.tags("option").Item(I).innerText
Cle = iDoc.All.tags("option").Item(I).Value
.......
next
mais j'ai l'impression de redécouvrir la roue...quelques pistes d'exemples ou d'aides seraient les bien venues...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 9 déc. 2011 à 08:16
d'ici, me semble: (VBP)
Reference=*\G{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}#4.0#0#C:\WINDOWS\system32\MSHTML.TLB#Microsoft HTML Object Library
LEBRIOU
Messages postés13Date d'inscriptiondimanche 5 novembre 2006StatutMembreDernière intervention17 mars 2013 8 déc. 2011 à 22:25
Bravo! c'est ce que je recherchais: les exemples permettent de mieux comprendre.
Ou peut-on avoir une documentation sur ce type de commande?
merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 26 juil. 2011 à 17:15
Salut RenFIELD,
Dans ton projet, ou trouve ton les constantes :
READYSTATE_INTERACTIVE
READYSTATE_COMPLETE
des 2 ligne qui suivent:
Do Until WebBrowser1.readyState = READYSTATE_INTERACTIVE: DoEvents: Loop
Do Until WebBrowser1.readyState = READYSTATE_COMPLETE: DoEvents: Loop
ne manquerait-il pas l'enumeration des valeurs de la propriété READYSTATE ?
Private Sub Command1_Click()
'# Nous allons selectionner la terre...
SelectHTMLItem "planet", "Terre"
End Sub
Private Sub SelectHTMLItem(ByRef vsIDSelect As String, ByRef vsItem As String)
Dim oSelect As Object
Dim oOption As Object
Set oSelect = WebBrowser1.Document.getElementById(vsIDSelect)
If Not Nothing Is oSelect Then
'If TypeOf oSelect Is HTMLSelectElement Then '# Possible d'utiliser ce test, ou le suivant
If TypeName(oSelect) = "HTMLSelectElement" Then
For Each oOption In oSelect.getElementsByTagName("option")
If oOption.Text = vsItem Then
oOption.Selected = True
Exit For
End If
Next
End If
End If
End Sub
davonisdavid
Messages postés4Date d'inscriptionvendredi 16 février 2007StatutMembreDernière intervention17 novembre 2010 16 nov. 2010 à 18:48
En fait la page que je veux piloter, je ne peux pas changer le code sources html ou php ou javascript. Aussi, j'arrive à accéder aux éléments input type=text ou password ou checkbox, mais j'arrive pas DU TOUT a interagir sur un <select> avec ses options et values des options, tu comprends ? Et en fait, j'ai fini TOUTE ma prog, sauf que n'arrivant pas à agir sur le select donc ca me bloque tout :'( snifsnif
Merci pour ces réponses si rapides ^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 16 nov. 2010 à 13:53
Pas acces a la page HTML ?
comment cela ?
davonisdavid
Messages postés4Date d'inscriptionvendredi 16 février 2007StatutMembreDernière intervention17 novembre 2010 16 nov. 2010 à 13:03
je n'ai pas accès à la page HTML. Aussi je ne sais pas comment faire pour accéder à ce select avec le code utiliser ici, peux tu m'aiguiller ?
merci par avance !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 16 nov. 2010 à 01:32
pour trouver les elements, recherche les <options> contenues
pour en selectionner une, je crois me souvenir qu'il m'a fallu modifier l'attribut selected de l'element <option> desire ...
davonisdavid
Messages postés4Date d'inscriptionvendredi 16 février 2007StatutMembreDernière intervention17 novembre 2010 14 nov. 2010 à 12:12
Bonjour,
J'utilise ce code, néanmoins je bloque sur un point : comment l'utiliser pour gérer un select html, je ne vois pas, j'ai essayer plusieurs choses, mais seul cet éléments de ma page internet je n'arrive pas à utiliser, trouver les éléments qui sont à l'interrieur et ensuite lui donner ma valeur voulue.
Merci d'avance !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 juil. 2010 à 23:51
mouarff...
on peux pas dire que t'es objectif, l'ami ^^
cs_Fraggy
Messages postés95Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 2 juin 2010 12 juil. 2010 à 23:10
Toujours aussi dévoué ce Rey ;-)
Près de 6 ans après le dépôt de ce source, il est toujours aussi apprécié et populaire.
pour ma part, la base de cette source est toujours utilisée dans une application au boulot.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 juil. 2010 à 20:21
rien.
lil est a utiliser avec vb6
je peux ajouter un exemple excel si tu le souhaites
que cherches tu as faire dans ton classeur ?
cs_rdelcourt
Messages postés3Date d'inscriptionlundi 2 avril 2007StatutMembreDernière intervention14 janvier 2008 12 juil. 2010 à 19:28
Merci de me rassurer.
Et le projet1.vbp, j'en fais quoi?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 juil. 2010 à 18:47
utilisable dans Excel, oui, tout a fait.
enfin... en repiquant le code via un editeur de texte
cs_rdelcourt
Messages postés3Date d'inscriptionlundi 2 avril 2007StatutMembreDernière intervention14 janvier 2008 12 juil. 2010 à 18:31
Bonjour,
Ce code me paraît extraordinaire (à lire tous ces commentaires).
Est-il utilisable en VBA pour Excel 2007?
Je ne connais pas l'extension "vbp" et l'importation de "frm" dans Visual Basic d'excel me dit "La classe de feuille de ce fichier n'est pas gérée dans VBE.Le fichier ne peut pas être chargé".
Moi aussi, j'aimerais dire bravo! :-)
jjmaster
Messages postés51Date d'inscriptionmardi 28 janvier 2003StatutMembreDernière intervention29 septembre 20101 18 janv. 2010 à 16:59
Merci beaucoup
Tres interessant
fr0x3n
Messages postés1Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 3 décembre 2008 3 déc. 2008 à 23:12
Salut Renfield.
Interessant en effet mais il me manque un petit quelque chose. En effet j'ai utiliser ton exemple pour automatiser la récupération d'information sur le site d'un client.
Il y a pas mal d'infos a récupérer malheureusement le lien lance un script en java (lien du genre "javascript:action()") bon jusque la pas de problème, mon problème vient du fait que le sub WebBrowser1_DocumentCompleted n'intervient jamais tout comme le WebBrowser1.ReadyState qui n'atteint jamais WebBrowserReadyState.Complete donc boucle infini. Ma solution a été d'utiliser un GetTickCount ou un delay pour faire patienter mais cela ne me satisfait pas car lourd et perte de temps. verrais tu une solution a mon problème? ou une piste tout au moins?
Merci
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 déc. 2007 à 22:10
Je suppose que tu dois pouvoir récuperer une instance de ce lien (objet link de la collection links)
et de faire oLink.Click
a tester...
pascalvp94
Messages postés4Date d'inscriptiondimanche 26 novembre 2000StatutMembreDernière intervention24 décembre 2007 24 déc. 2007 à 16:42
Bonjour,
Comment faire pour envoyer un formulaire lorsque le form n'est pas à envoyer en submit mais via un lien du genre ?
J'ai essayé par la méthode invokemember, mais sans réussite.
Merci de votre aide
pascal
popol70
Messages postés1Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention 8 novembre 2007 8 nov. 2007 à 17:32
là, moi je dis chapeau...je cherchais ça depuis un moment
je vais tester de suite au taf et à la maison
j'aurais surement des questions...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 août 2007 à 20:12
tu pourrais me filer ton code VB et ton code HTML ?
mail@ thomas_reynald@msn.com
parce que là, c'est étrange...
cs_thibaud28
Messages postés9Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention14 août 2007 14 août 2007 à 18:51
Merci pour la réponse mais voila la nouvelle erreur :
j'utilise "IE.document.Forms(0).submit"
et il me retourne :
RunTime error '438':
Object doesn't support this property or method.
Que dois-je faire?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 août 2007 à 06:27
fallais que j'essaye, et effectivement, a fonctionne parfaitement...
WebBrowser.Document.Forms( 0 ).Submit
cs_thibaud28
Messages postés9Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention14 août 2007 12 août 2007 à 11:12
Ca fait une heure que je tourne en rond en essayant d'enviyer un formulaire qui n'a pas de nom et qui contient un bouton submit sans nom lui aussi !
J'utilise : IE.Document.Forms(1).Submit
Mais toujours la même erreur :
"Run time error (91) :
Objet Variable or With Block not set"
Quelqu'un aurait-il la solution? merci d'avance
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 9 août 2007 à 07:17
Assures toi que le Formulaire que tu tentes de valider soit bien le premier...
6h
Messages postés6Date d'inscriptionlundi 6 août 2007StatutMembreDernière intervention 8 août 2007 8 août 2007 à 21:14
J'ai le même problème que plus haut, à savoir que le bouton n'a pas de nom.
Je tente de faire Doc.Forms(1).submit pour tenter de valider le formulaire quand même ? Ca ne marche pas. Je suis assez débutant faut dire mais si tu pouvais m'aider, ce me serait très précieux :)
zn415
Messages postés62Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention21 novembre 2015 27 juil. 2007 à 01:36
J'ai l'impression que je suis trop debutant pour faire fonctionner ça.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 27 juil. 2007 à 01:03
Dll d'API, c'est pas un ActiveX
'Code by Shige
Private Type TGUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Declare Function OleLoadPicturePath Lib "oleaut32.dll" (ByVal szURLorPath As Long, ByVal punkCaller As Long, ByVal dwReserved As Long, ByVal clrReserved As OLE_COLOR, ByRef riid As TGUID, ByRef ppvRet As IPicture) As Long
Public Function LoadPicture(ByVal strFileName As String) As Picture
Dim IID As TGUID
With IID
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
On Error GoTo ERR_LINE
OleLoadPicturePath StrPtr(strFileName), 0&, 0&, 0&, IID, LoadPicture
Exit Function
ERR_LINE:
Set LoadPicture = VB.LoadPicture(strFileName)
End Function
Private Sub Form_Load()
Set Me.Picture = LoadPicture("http://www.allapi.net/images/allapi_logo.gif")
End Sub
zn415
Messages postés62Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention21 novembre 2015 27 juil. 2007 à 00:21
Je viens de faire une recherche et le fichier ce nomme oleaut32.dll
Pas moyen de l'ajouter dans mes references, ou se trouve l'astuce?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 juil. 2007 à 23:58
euh...
Merci ^^
cette API (exemples un peu partout sur le Net) permet de charger des images en spécifiant une URL).
EBArtSoft a post une source qui permet même de patcher la fonction LoadPicture de VB pour qu'elle puisse utiliser les URL...(très fort, non ?)
Squall____
Messages postés65Date d'inscriptionmercredi 7 janvier 2004StatutMembreDernière intervention11 septembre 2012 26 juil. 2007 à 23:32
Mais il est pas possible ce Renfield...
Il sait tout sur tout !!! (franchement, chapeau bas...)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 juil. 2007 à 21:11
j'utiliserai plutot l'API OLELoadPicture
zn415
Messages postés62Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention21 novembre 2015 26 juil. 2007 à 19:24
savez vous comment faire pour actualiser une image venant du web sans scintillement en utilisant WebBrowser?
Je ne comprends pas pourquoi j'ai un vieu bug du genre :
Class does not support automation or does not support expected interface.
J'ai pourtant bien mis en référence les deux librairies (XP SP 1 / SP 2 + IE7 et IE6)
niKolas59
Messages postés25Date d'inscriptionmercredi 9 mai 2007StatutMembreDernière intervention21 janvier 2008 28 mai 2007 à 16:33
J'ai trouvé l'erreur apparemment...
Il y a deux "Microsoft Internet Controls" (c'est normal ??)
J'ai sélectionné le second et mis une priorité plus haute que l'autre et ca fonctionne !
Désolé pour le dérangement et merci pour ta disponibilité.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 mai 2007 à 16:25
étrange, je viens de :
- faire un nouveau projet
- copier le code présenté ici, et l'ai collé dans le code de la nouvelle Form
- copier/coller le textbox et le bouton
- ajouter dans les references de mon nouveau projet:
- Microsoft HTML Object Library
- Microsoft Internet Controls
et ça fonctionne nikel...
niKolas59
Messages postés25Date d'inscriptionmercredi 9 mai 2007StatutMembreDernière intervention21 janvier 2008 28 mai 2007 à 15:58
Bonjour, je suis débutant en Visual Basic et cherchais a travaillé sur ce genre de choses, j'ai repris ton code et l'ai copié coller dans un nouveau projet, ainsi que ton bouton et ton textbox. J'ai ajouté les références qu'il fallait, mais à l'éxécution un erreur apparait :
"Erreur d'exécution '430'
La classe ne gère pas soit Automation ou l'interface attendue"
Ai-je oublié de faire quelquechose de précis ?
Merci
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 mars 2007 à 19:03
le plus simple ici est de faire MonFormulaire.Submit
par exemple :
...Forms(1).Submit
++
cs_Fraggy
Messages postés95Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 2 juin 2010 12 mars 2007 à 13:08
Rey, j'ai moi aussi le problème que le bouton n'a pas de nom et je ne parviens pas à faire fonctionner ce code pour des pages intranet et ce que cela soit avec l'exemple de Google ou celui de Ebay. J'arrive à remplir le champ mais pas à presser le bouton :/. Voici la source :
<FORM METHOD="POST">
FireWall-1 message: User:
Input:
Please press 'Submit' when done: </FORM>
On voit donc clairement que le champ est DATA, mais pour le bouton, y a rien. Il m'est donc impossible de cliquer sur le bouton. Tu n'aurais pas une solution ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 4 janv. 2007 à 06:57
y'a un moyen, de passer outre l'affichage frame par frame, qui est là pour sécuriser, et limiter les scripts inter domaines.
un collègue MVP VB l'avait réalisé, je sais plus sur quel site, il s'agit de haute voltige, d'instanciation d'interface, avec TLB et tout le toutim, pour en gros "montrer patte blanche".
faisable, donc, mais pas aisément ^^
AngeliusMefyrx
Messages postés52Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention14 octobre 2007 3 janv. 2007 à 15:00
Salut,
Je suis pas un expert la dedans, pour mon code, j'y ai été en essaie et erreur surtout que la seule erreur que j'avais c'étais "objet invalide" et ça ma pris au moins 10 heures à percer le mystère puisque je n'avais pas le code source...
La commande links, je connais pas...
Sauf que c'est possible que tu aies raison, puisque on a le programme principale et celui de relève... celui de relève étant suposer une copie du principle, le meme code que j'ai mis pour le principale ne marche pas pour celui de relève ce qui semble absurde, sauf l'interface pointe probablement ses frames sur un autre serveur...
J'ai pas le moyen de le tester mais si j'avais à prendre un "guess" je dirais, essaie:
IE.document.frames(1).document.links.item(x)
1 = le 1er frame ...2 le 2e...etc
ou
IE.document.frames.NOMDUFRAME.document.links.item(x)
Évidement dans mon cas, ce qui m'a pris une éternité, c'est qu'il y avait un frame dans un frame et je savais pas...
cs_trackpi
Messages postés6Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention 3 janvier 2007 3 janv. 2007 à 11:43
Je précise mes inquiétudes : quand la iframe appartient à un autre domaine que la page principale, j'ai l'impression que IE refuse clairement d'en montrer le contenu ... Par exemple si on fait set obj = ie.document.frames.item(0) et qu'on essaye de regarder ce que obj a dans le ventre en mettant un espion dessus, on obtient que du "accès refusé" ...
cs_trackpi
Messages postés6Date d'inscriptionjeudi 24 mars 2005StatutMembreDernière intervention 3 janvier 2007 3 janv. 2007 à 11:33
Beau boulot ! Le balayage des instance ouverte pour voir si il y en a déja une sur l'url demandée est chouette.
J'ai toujours du mal avec les iframe ... quelle est la hierarchie de "IE.truc.machin.bidule" pour lister les links ( ...) qui sont dans une iframe ?
Ceux qui sont dans la page je les trouve sur IE.document.links.item(x) mais ceux de la frame je les cherche encore ...
AngeliusMefyrx
Messages postés52Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention14 octobre 2007 19 déc. 2006 à 20:05
Finalement, pourcontourner le problème, je vais me répondre à moi même
If InStr(1, IE.Document.frames.main.Location, "Le liens dans mon frame") = 0 Then
Call MsgBox("C'est le bon liens")
End If
AngeliusMefyrx
Messages postés52Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention14 octobre 2007 19 déc. 2006 à 18:50
AngeliusMefyrx
Messages postés52Date d'inscriptionlundi 20 mars 2006StatutMembreDernière intervention14 octobre 2007 19 déc. 2006 à 18:49
Bonjour,
Voici du code que peut-être certaines personne vont trouver intéressantes suite à quelques questions que j'ai vu rapidement.... mais faudra l'adapter à votre code
Public Monliens As String
Public IE As Object
Public Const vUrl = "whatever"
Public Const vTargetFrame = "main"
Public Const vPosteData = ""
Public Const vHeaders = ""
Public Const vFlags = ""
Dim AllIE As Object
Dim VerifURL As String
Dim i As Integer
Set AllIE = CreateObject("Shell.Application")
If Monliens = "" Then
Call MsgBox("msg d,erreur", vbCritical, "titre")
Exit Sub
End If
For i = 0 To AllIE.windows.Count - 1
If InStr(1, Monliens , AllIE.windows(i).locationurl, vbTextCompare) <> 0 Then
If Not AllIE.windows(i).busy Then
Set IE = AllIE.windows(i)
i = AllIE.windows.Count - 1
Else
Reponse = MsgBox("Le liens " & Monliens & " est présentement utilisé, voullez vous attendre que celui çi soit disponible", vbYesNo, "Connection utilisé")
If Reponse = 6 Then
While AllIE.windows(i).busy
DoEvents
Wend
IE = AllIE.windows(i)
i = AllIE.windows.Count - 1
End If
End If
End If
Next i
If IE Is Nothing Then
Reponse = MsgBox("Aucun liens (" & Monliens & "),Voullez-vous ouvrir le Portail?", vbYesNo)
If Reponse = 6 Then
Set IE = CreateObject("InternetExplorer.Application")
Call IE.navigate(Monliens , vFlags, vTargetFrame, vpostdata, vHeaders)
While IE.busy
DoEvents
Wend
Else
Call MsgBox("Désolé, aucune fenêtre Internet Explorer disponible", vbOKOnly)
Exit Sub
End If
J'avais une question par contre, évidement si l'object désirer n'exite pas, cela me donne une erreur, comment puis-je gérer cette erreur....
Exemple, la dernière ligne indique que je veux mettre une valeur dans une boite, sauf que si un des frames n'est pas présent, je peux vouloir lui dire de faire un navigate, dans le cas contraire ne pas faire le navigate pour rien, puisque cela prends quelques secondes inutilement....
Merci
Squall____
Messages postés65Date d'inscriptionmercredi 7 janvier 2004StatutMembreDernière intervention11 septembre 2012 20 sept. 2006 à 14:10
Pour l'instant j'essaye mais sans succès...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 20 sept. 2006 à 12:35
au pire, tu dois pouvoir manipuler la collection Document.Frames( ...)
Squall____
Messages postés65Date d'inscriptionmercredi 7 janvier 2004StatutMembreDernière intervention11 septembre 2012 20 sept. 2006 à 12:23
Ok merci. Mais pourrais tu m'en dire plus sur la gestion des interfaces dont tu parles ? Ou bien me réorienter vers une source ou autre...
Sinon, pour ton idée d'utiliser la frame comme adresse de départ, je vais essayer.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 20 sept. 2006 à 12:00
manipuler les Frame n'est pas impossible, mais requiert l'implémentation d'interfaces particulières, etc...
tu peux peut-être utiliser directement l'URL de la frame en question, comme URL de départ.
Squall____
Messages postés65Date d'inscriptionmercredi 7 janvier 2004StatutMembreDernière intervention11 septembre 2012 20 sept. 2006 à 11:51
Tout d'abord, merci beaucoup pour se superbe code.
Mais j'ai un souci... Je cherche à utiliser cette technique pour me loguer sur un site mais je m'apperçois que les items que je dois utiliser ne font pas partie de la page principale mais d'une frame....
Comment interragir avec ses items ?
Merci d'avance pour ton aide.
laurent_vp
Messages postés2Date d'inscriptionmardi 24 août 2004StatutMembreDernière intervention28 juillet 2006 31 juil. 2006 à 16:10
Bonjour à tous !
J'utilise un contrôle WebBrowser (intégré au framework .NET 2.0) et je rencontre un problème lors de l'impression d'une page HTML. J'ai essayé ta méthode citée plus haut, Renfield, mais le résultat est toujours le même, rien ne se passe quelque soit la méthode :
- méthode Print du WebBrowser
- méthode ExecCommand "Print" de WebBrowser.Document
- méthode ExecCommand "Print" de l'interface IHTMLDocument2
Quelqu'un aurait rencontré ce pb ou aurait une solution en .NET ?
Merci d'avance,
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 16 juin 2006 à 09:51
Merci beaucoup ! C'est très utile
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 juin 2006 à 18:34
tu as la collection Links qui est accessible...
ratala
Messages postés248Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention22 juin 2008 15 juin 2006 à 18:20
Salut !
En tout cas bravo pour ta source, c'est genial mais ou as-tu appris tout sa ? j'ai cherché sur internet et j'ai rien trouvé qui expliquait les propriétés de IE.Document.
En fait je cherchait un moyen de choisir un lien au hazard sur la page et puis en suite aller sur ce lien, je suis sur que c'est possible mais je ne sais pas comment faire !
merci d'anvance !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2006 à 10:44
télécharge directement Expport.php en un fichier Excel, en ce cas ^^
(en utilisant, par exemple URLDownloadToFile)
Mattheous
Messages postés8Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 10:40
Alors oui, la boite s'affiche dès que l'on affiche la page.
Le site est en php, et après la recherche effectuée, le seul moyen d'extraire toutes les infos
sous un fichier excel est d'appeler la page "Export.php", qui, dès qu'on la charge, affiche la boite de dialogue afin d'ouvrir ou enregistrer le fichier.
Il n'y a pas de contenu HTML, cela provoque juste l'export par php sous un fichier de type excel.
Comment faire ?
Merci encore une fois pour ton aide
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2006 à 10:25
cette boite de dialogue arrive toute seule ? ou suite a un click quelque part ?
si tu as le code HTML, tu dois pouvoir en extraire les infos nécessaires au téléchargement 'manuel' du fichier (sans passer par la boite de dialogue)
Mattheous
Messages postés8Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 10:16
En fait voilà ce que souhaite faire :
Je me connecte à une appli intranet, me log, lance une recherche dans la base de l'appli (je ne peux passer que par l'interface intranet car on refuse de me donner un access en lecture sur la base...) puis, j'ouvre une url qui permet d'exporter le resultat de la recherche.
Cette page d'export m'ouvre une boite de dialogue me proposant d'ouvrir le fichier (format excel) ou de l'enregistrer. Dans mon cas, je souhaite l'enregistrer...
Comment faire ?
Merci de ton aide Renfield, ton code m'a déjà bien aidé
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 mai 2006 à 09:50
je crois pas que l'on puisse...
au pire, on sais intercepter les clicks sur les liens...
on peux alors annuler l'apparition de la fenetre (en renvoyant False), et s'occuper nous même du téléchargement du fichier
Mattheous
Messages postés8Date d'inscriptionvendredi 8 juillet 2005StatutMembreDernière intervention19 mai 2006 19 mai 2006 à 09:07
Bonjour,
Tout d'abord félicitations pour cet excellent code !
J'aimerai savoir si quelqu'un sait comment interagir sur les prompts d'IE, par exemple si on ouvre une url d'un lien direct de téléchargement, comment valider l'enregistrement dans la fenetre de prompt d'IE ?
Une question qui se rapproche à celle de Polemos qui etait restée, me semble-t-il sans réponse.
Merci d'avance !
fufu84
Messages postés3Date d'inscriptionmardi 31 août 2004StatutMembreDernière intervention18 avril 2006 18 avril 2006 à 12:47
Ah! désolé, je viens de comprendre... la source affichée sur cette page ne correspond pas à celle qu'il y a sur tes fichier?
Car j'utilise VB5... donc évidemment, y'a un pitit problème ;)
M'enfin merci pour l'indication, ca m'évitera d'y passer 3 heures^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 18 avril 2006 à 08:11
fufu84
Messages postés3Date d'inscriptionmardi 31 août 2004StatutMembreDernière intervention18 avril 2006 17 avril 2006 à 15:30
Super ce code!
J'ai cherché ca pendant pas mal de temps....
Cependant, j'ai un petit problème.
Lorsque je l'execute, il bugg là:
Btn_Search.Enabled = True
Txt_Search.Enabled = True
Par ailleurs, j'essaye de trouver les boutons, mais je n'arrive pas (lorsque je cherche dans la source).
bref, avez-vous une solution?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 mars 2006 à 10:47
exemple d'interception d'evenement ajouté au Zip
jejelechasseur
Messages postés4Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention26 mars 2006 24 mars 2006 à 09:52
Bonjour,
Je vois que l'on peut piloter IE à partir du code vb,
mais est-il possible de faire l'inverse ?
Je m'explique :
Je voudrais capter, dans mon programme vb, le clic sur un bouton, par exemple, de ma page web.
Est ce possible et comment ? (avec source à l'appui si c'est possible)
Merci
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 mars 2006 à 00:41
Zip mis ajour avec eBay
felin200069
Messages postés2Date d'inscriptionjeudi 7 octobre 2004StatutMembreDernière intervention14 mars 2006 14 mars 2006 à 00:07
Peux tu me dire comment faire ce submit car c'est la premiere fois que je dois l'utiliser.
Merci
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 12 mars 2006 à 08:32
tu peux faire un submit du formulaire, je pense ^^ (.submit)
felin200069
Messages postés2Date d'inscriptionjeudi 7 octobre 2004StatutMembreDernière intervention14 mars 2006 12 mars 2006 à 00:53
Salut
Avec ce code j'arrive a ecrire dans la page de www.ebay.fr en haut a droite dans "nouvelle recherche" du texte mais je n'arrive pas a valider avec le bouton "rechercher" car il n'as pas de nom.
Merci de m'aider.
cs_Booster
Messages postés235Date d'inscriptionmercredi 30 octobre 2002StatutMembreDernière intervention 6 octobre 2009 13 févr. 2006 à 20:27
Bravo!!! absolument manifique se code je pensé même pas que c'été possible
Merci à toi renfield
devforce1
Messages postés15Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention20 septembre 2006 15 nov. 2005 à 15:21
En fouillant j'ai trouvé cette commande qui prend l'imprimante par defaut !
IE.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER)
Encore merci pour ta source et tes reponses.
DevForce1-Julien
devforce1
Messages postés15Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention20 septembre 2006 15 nov. 2005 à 12:35
Merci beaucoup ca marche nikel...
Sais tu si il est possible de retirer le prompt de choix d'imprimante et d'en specifier une precisement?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 15 nov. 2005 à 11:47
tu as dans le code :
Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim Doc As IHTMLDocument2
Set Doc = IE.document
Pour imprimer, tu as la commande Print :
Doc.execCommand "Print"
devforce1
Messages postés15Date d'inscriptionjeudi 18 septembre 2003StatutMembreDernière intervention20 septembre 2006 15 nov. 2005 à 11:12
Bonjour Renfield,
ta source m'interesse grandement et je me demandais comment tu declarais ton doc? Quel type etc...
En ce qui me concerne, je dois imprimer des documents HTML. J'arrive a les ouvrir mais pour les imprimer je seche un peu.
Merci de ton aide
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 nov. 2005 à 12:39
c'est une fonction du Document :
Set Doc = IE.document
Doc.execCommand ......
CDAlstom
Messages postés69Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 6 mars 2006 10 nov. 2005 à 12:08
Pour préciser, en fait, je voudrais en quelques sortes mettre un bouton "enregistrer" qui enregistrerait la page en html dans un répertoire prédéfini (ex: C:\)...Merci!!!
CDAlstom
Messages postés69Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 6 mars 2006 10 nov. 2005 à 11:55
C du javascript ou quoi?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 nov. 2005 à 11:37
tu trouveras dans la doc la fonction
execCommand(cmdID As String, [showUI As Boolean = Faux], [value])
tu peux faire par exemple :
execCommand("SaveAs", 1, "C:\MaPage.html")
CDAlstom
Messages postés69Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention 6 mars 2006 10 nov. 2005 à 11:06
Bonjour, puisqu'il s'agit ici de "piloter" IE, comment faire pour enregister une page...? Avec un tru du genre "IE.save"...?!?
Merci d'avance!
cs_polemos
Messages postés6Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention27 mai 2005 27 mai 2005 à 09:01
Bonjour,
Et lorsque que IE ouvre un msbox, sais-tu comment lui "parler" : cliquer sur le bouton de ton choix, ou saisir des infos ?
Cdt
Polemos
sirex007
Messages postés1Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention20 mai 2005 20 mai 2005 à 11:41
Bonjour,
Je voudrais savoir comment faire pour manipuler par le code un InternetExplorer existant.
Je m'explique, dans votre code vous déclarer : dim IE as new InternetExplorer
ensuite vous lui affecter une adresse etc etc..
Moi ce que je veux en faite, c'est affecter à cette même variable IE, l'internet explorer qui est déjà ouvert sur mon poste...
Je ne dispose pas d'aide avec l'outil que j'utilise, et je voudrais savoir si quelqu'un à déjà fait cela.
Cordialement.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 avril 2005 à 16:41
tu peux enumerer les images de ta feuille, et tenter de reconaitre le bouton souhaité
je n'en sais pas davantage de tête, dsl
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 22 avril 2005 à 14:34
Merci pour ce code genial
Par contre j'ai un probleme, comment fait on si le bouton est un gif et donc n'a pas de "name"
cs_mchurlet
Messages postés2Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention30 mars 2005 30 mars 2005 à 17:17
Bonjour Renfield.
Mille mercis pour ce code. C'est exactement ce que je cherchais et que j'ai fait de façon beaucoup plus compliqué.
Je refais tout avec ton code.
Saurais-tu me donner quelques infos pour récupérer les "name" d'un bouton à l'intérieur d'une frame en vu d'un click. ?
Pas de problème pour la page de premier plan mais je me perds dans l'arborescence des frames sur certain sites compliqués et je n'arrive pas à récupérer les infos des frames et de leur contenu.
Merci (1001) et A12C4
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 janv. 2005 à 22:10
Sendmessage.... je dirai sur MSDN, tu trouveras toutes la doc' nécessaire...
reste a assembler le tout...
le tout est que tu soit un peu familier avec l'architecture de Windows
juste a te dire que pour agir sur un controle, il faut son Handle (hWnd) , que l'on peut récuperer via FindWindow et FindWindowEx
j'ai pas d'exemple, là, sous la main, dsl
mais le net est là, et tu devrais pouvoir y trouver ton bonheur
jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013 24 janv. 2005 à 16:41
Aurais-tu un exemple ou pourrais-tu me dire s'il est possible de trouver de la doc sur les API de SendMessage ??
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 24 janv. 2005 à 15:54
oui, via les API, et en utilisant au besoin SPy++
tu utilises FindWindow pour obtenir le handle des controles qui t'interessent, et avec des SendMessage ou autres API, tu peux piloter les actions de ton application...
jocou
Messages postés52Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention19 novembre 2013 24 janv. 2005 à 14:43
Super !
Mais est-il possible de faire la même chose avec une application Windows qui ne soit pas IE (ou un webBrowser) et qui ne supporte pas l'OLE (comme Word et Excel par exemple) ???
Merci
cs_polemos
Messages postés6Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention27 mai 2005 29 sept. 2004 à 15:47
Bonjour,
Pourrais-tu expliquer ton code. J'ai essayé de le transcrire en VBA via Excel sans succès...
C'est le passage de la saisie dans un userform vers IE qui me bloque semble-til...
Cordialement
Polemos
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 31 août 2004 à 12:50
Par hasard, tu sais pas comment piloter euuh un avion en vb?
Merci pour ce code et je pense que c'est utile pour gérer un formulaire d'enregistrement d'un prog via ie !!
Sirocooo
Messages postés412Date d'inscriptionmercredi 19 décembre 2001StatutMembreDernière intervention 7 avril 20081 26 août 2004 à 08:48
Moi aussi j'utilise FireFox et je ne veux plus entendre parler de IE...
Ton code est propre, ya rien à dire... Il faudrait trouver la solution pour piloter un autre navigateur...
9/10
O Sensei
Messages postés13Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention 5 février 2009 25 août 2004 à 12:30
Normale Microsoft Corp. oblige ;)
Merci qd meme ^^
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 25 août 2004 à 12:29
Je ne sais rien de FireFox....
mais IE donne accès a pas mal d'objets qui permettent une certaine automatisation....(Comme le permettent Word ou Excel, également)
O Sensei
Messages postés13Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention 5 février 2009 25 août 2004 à 12:22
Vraiment sympa sinon (dsl d'etre casse pied) mais perso j'utilise FireFox et je présume que ca ne doit pas etre possible autrement qu'avec IE ??!!
12 déc. 2011 à 19:42
En effet,cette docu. est dense. je devrais y trouver ce que je cherche.
J'ai déjà pu profiter d'un de vos codes (Un explorateur de répertoires),il était aussi très bien documenté. je l'ai adopté et adapte dans un autre projet(qui est lui aussi en cours)
Encore merci pour cette réponse et pour l'aide.
12 déc. 2011 à 06:56
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-6043025
évite le iDoc.All
utiliser le getElementById getElementsByName et getElementsByTagName
9 déc. 2011 à 21:36
je découvre ce domaine de programmation qui correspond à un projet que je cherche à développer interagir sur une page HTML.
je cherche actuellement une aide pour ce type de commandes.l'explorateur d'objets en donne bien la liste
mais aucun détail ni sur leur fonction ni sur la syntaxe.Actuellement c'est grâce à des exemples comme les votre et quelques tâtonnements que
j'arrive péniblement à réaliser ce que je cherche à faire: par exemple changer (ou lire) la valeur d'une zone de saisie
je n'ai rien trouvé d'exploitable sur le site de microsoft (mais j'ai peut être mal chercher)
En bidouillant, j'ai pu énumérer et lire les options d'un listebox:
de la forme: <option value="IRL" title="irlande">irlande</option>
Dim iDoc As IHTMLDocument2
For I = 0 To iDoc.All.tags("option").length - 1
Texte = iDoc.All.tags("option").Item(I).innerText
Cle = iDoc.All.tags("option").Item(I).Value
.......
next
mais j'ai l'impression de redécouvrir la roue...quelques pistes d'exemples ou d'aides seraient les bien venues...
9 déc. 2011 à 08:16
Reference=*\G{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}#4.0#0#C:\WINDOWS\system32\MSHTML.TLB#Microsoft HTML Object Library
8 déc. 2011 à 22:25
Ou peut-on avoir une documentation sur ce type de commande?
merci
26 juil. 2011 à 17:15
Dans ton projet, ou trouve ton les constantes :
READYSTATE_INTERACTIVE
READYSTATE_COMPLETE
des 2 ligne qui suivent:
Do Until WebBrowser1.readyState = READYSTATE_INTERACTIVE: DoEvents: Loop
Do Until WebBrowser1.readyState = READYSTATE_COMPLETE: DoEvents: Loop
ne manquerait-il pas l'enumeration des valeurs de la propriété READYSTATE ?
telle que:
Enum READYSTATE
READYSTATE_UNINITIALIZED = 0
READYSTATE_LOADING = 1
READYSTATE_LOADED = 2
READYSTATE_INTERACTIVE = 3
READYSTATE_COMPLETE = 4
End Enum
Ou bien sont'elles connues de l'objet Webrowser ? apparemment oui !
Il me semble que si l'on travail directement avec l'objet IE il faut cette énumération...
A moins que le fait de référencer IE suffit ?... mais comme je n'aime pas le référencement à IE je n'est pas essayé.
A+
PS bon ok j'ai la question et la réponse mais cela coûte rien de le signaler ;)
7 déc. 2010 à 11:41
S'il reste encore des gens à l'écoute
Je cherche, après avoir lancer la page qui m'intéresse, savoir si un ascenseur verticale est présent ou pas.
Est-ce possible ?
17 nov. 2010 à 10:42
Super ce code, ca marche, ENFINNNNNNNNNNNNNNN !
Je suis pas un Dieux en VB de loin, pas trop de temps, mais la tu m'enlève une sacrée épine du pied !
merci encore ! :=D
Si jamais j'ai d'autres soucis, je me permettrais de revenir vers toi !!!
17 nov. 2010 à 08:56
exemple :
<select id="planet" size="8">
<option>Mercure</option>
<option>Venus</option>
<option>Terre</option>
<option>Mars</option>
<option>Jupiter</option>
<option>Saturne</option>
<option>Uranus</option>
</select>
Private Sub Command1_Click()
'# Nous allons selectionner la terre...
SelectHTMLItem "planet", "Terre"
End Sub
Private Sub SelectHTMLItem(ByRef vsIDSelect As String, ByRef vsItem As String)
Dim oSelect As Object
Dim oOption As Object
Set oSelect = WebBrowser1.Document.getElementById(vsIDSelect)
If Not Nothing Is oSelect Then
'If TypeOf oSelect Is HTMLSelectElement Then '# Possible d'utiliser ce test, ou le suivant
If TypeName(oSelect) = "HTMLSelectElement" Then
For Each oOption In oSelect.getElementsByTagName("option")
If oOption.Text = vsItem Then
oOption.Selected = True
Exit For
End If
Next
End If
End If
End Sub
16 nov. 2010 à 18:48
Merci pour ces réponses si rapides ^^
16 nov. 2010 à 13:53
comment cela ?
16 nov. 2010 à 13:03
merci par avance !
16 nov. 2010 à 01:32
pour en selectionner une, je crois me souvenir qu'il m'a fallu modifier l'attribut selected de l'element <option> desire ...
14 nov. 2010 à 12:12
J'utilise ce code, néanmoins je bloque sur un point : comment l'utiliser pour gérer un select html, je ne vois pas, j'ai essayer plusieurs choses, mais seul cet éléments de ma page internet je n'arrive pas à utiliser, trouver les éléments qui sont à l'interrieur et ensuite lui donner ma valeur voulue.
Merci d'avance !
12 juil. 2010 à 23:51
on peux pas dire que t'es objectif, l'ami ^^
12 juil. 2010 à 23:10
Près de 6 ans après le dépôt de ce source, il est toujours aussi apprécié et populaire.
pour ma part, la base de cette source est toujours utilisée dans une application au boulot.
12 juil. 2010 à 20:21
lil est a utiliser avec vb6
je peux ajouter un exemple excel si tu le souhaites
que cherches tu as faire dans ton classeur ?
12 juil. 2010 à 19:28
Et le projet1.vbp, j'en fais quoi?
12 juil. 2010 à 18:47
enfin... en repiquant le code via un editeur de texte
12 juil. 2010 à 18:31
Ce code me paraît extraordinaire (à lire tous ces commentaires).
Est-il utilisable en VBA pour Excel 2007?
Je ne connais pas l'extension "vbp" et l'importation de "frm" dans Visual Basic d'excel me dit "La classe de feuille de ce fichier n'est pas gérée dans VBE.Le fichier ne peut pas être chargé".
Moi aussi, j'aimerais dire bravo! :-)
18 janv. 2010 à 16:59
Tres interessant
3 déc. 2008 à 23:12
Interessant en effet mais il me manque un petit quelque chose. En effet j'ai utiliser ton exemple pour automatiser la récupération d'information sur le site d'un client.
Il y a pas mal d'infos a récupérer malheureusement le lien lance un script en java (lien du genre "javascript:action()") bon jusque la pas de problème, mon problème vient du fait que le sub WebBrowser1_DocumentCompleted n'intervient jamais tout comme le WebBrowser1.ReadyState qui n'atteint jamais WebBrowserReadyState.Complete donc boucle infini. Ma solution a été d'utiliser un GetTickCount ou un delay pour faire patienter mais cela ne me satisfait pas car lourd et perte de temps. verrais tu une solution a mon problème? ou une piste tout au moins?
Merci
25 déc. 2007 à 22:10
et de faire oLink.Click
a tester...
24 déc. 2007 à 16:42
Comment faire pour envoyer un formulaire lorsque le form n'est pas à envoyer en submit mais via un lien du genre ?
[javascript:afficheAutrePagePB(document.RecherchePagesBlanchesIndexeForm,2,'suite') Page suivante]
J'ai essayé par la méthode invokemember, mais sans réussite.
Merci de votre aide
pascal
8 nov. 2007 à 17:32
je vais tester de suite au taf et à la maison
j'aurais surement des questions...
14 août 2007 à 20:12
mail@ thomas_reynald@msn.com
parce que là, c'est étrange...
14 août 2007 à 18:51
j'utilise "IE.document.Forms(0).submit"
et il me retourne :
RunTime error '438':
Object doesn't support this property or method.
Que dois-je faire?
13 août 2007 à 06:27
WebBrowser.Document.Forms( 0 ).Submit
12 août 2007 à 11:12
J'utilise : IE.Document.Forms(1).Submit
Mais toujours la même erreur :
"Run time error (91) :
Objet Variable or With Block not set"
Quelqu'un aurait-il la solution? merci d'avance
9 août 2007 à 07:17
8 août 2007 à 21:14
Je tente de faire Doc.Forms(1).submit pour tenter de valider le formulaire quand même ? Ca ne marche pas. Je suis assez débutant faut dire mais si tu pouvais m'aider, ce me serait très précieux :)
27 juil. 2007 à 01:36
27 juil. 2007 à 01:03
'Code by Shige
Private Type TGUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Declare Function OleLoadPicturePath Lib "oleaut32.dll" (ByVal szURLorPath As Long, ByVal punkCaller As Long, ByVal dwReserved As Long, ByVal clrReserved As OLE_COLOR, ByRef riid As TGUID, ByRef ppvRet As IPicture) As Long
Public Function LoadPicture(ByVal strFileName As String) As Picture
Dim IID As TGUID
With IID
.Data1 = &H7BF80980
.Data2 = &HBF32
.Data3 = &H101A
.Data4(0) = &H8B
.Data4(1) = &HBB
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H30
.Data4(6) = &HC
.Data4(7) = &HAB
End With
On Error GoTo ERR_LINE
OleLoadPicturePath StrPtr(strFileName), 0&, 0&, 0&, IID, LoadPicture
Exit Function
ERR_LINE:
Set LoadPicture = VB.LoadPicture(strFileName)
End Function
Private Sub Form_Load()
Set Me.Picture = LoadPicture("http://www.allapi.net/images/allapi_logo.gif")
End Sub
27 juil. 2007 à 00:21
Pas moyen de l'ajouter dans mes references, ou se trouve l'astuce?
26 juil. 2007 à 23:58
Merci ^^
cette API (exemples un peu partout sur le Net) permet de charger des images en spécifiant une URL).
EBArtSoft a post une source qui permet même de patcher la fonction LoadPicture de VB pour qu'elle puisse utiliser les URL...(très fort, non ?)
26 juil. 2007 à 23:32
Il sait tout sur tout !!! (franchement, chapeau bas...)
26 juil. 2007 à 21:11
26 juil. 2007 à 19:24
11 juil. 2007 à 14:01
Ton zip nikel, mon copier/coller dead.
Merci - ton exemple c'est exactement ce que je recherchais !!!
Enfin une victoire de canard.
Merci pour ton aide :)
PS : Je te confirme IE 6 / IE 7 c'est pas possible, g plusieurs pc de test
11 juil. 2007 à 13:49
j'imagine que ca doit pas faire très bon ménage ^^
ce soucis, tu l'as eu sur le code en test dans le .Zip ?
11 juil. 2007 à 13:40
Class does not support automation or does not support expected interface.
J'ai pourtant bien mis en référence les deux librairies (XP SP 1 / SP 2 + IE7 et IE6)
28 mai 2007 à 16:33
Il y a deux "Microsoft Internet Controls" (c'est normal ??)
J'ai sélectionné le second et mis une priorité plus haute que l'autre et ca fonctionne !
Désolé pour le dérangement et merci pour ta disponibilité.
28 mai 2007 à 16:25
- faire un nouveau projet
- copier le code présenté ici, et l'ai collé dans le code de la nouvelle Form
- copier/coller le textbox et le bouton
- ajouter dans les references de mon nouveau projet:
- Microsoft HTML Object Library
- Microsoft Internet Controls
et ça fonctionne nikel...
28 mai 2007 à 15:58
"Erreur d'exécution '430'
La classe ne gère pas soit Automation ou l'interface attendue"
Ai-je oublié de faire quelquechose de précis ?
Merci
12 mars 2007 à 19:03
par exemple :
...Forms(1).Submit
++
12 mars 2007 à 13:08
<FORM METHOD="POST">
FireWall-1 message: User:
Input:
Please press 'Submit' when done: </FORM>
On voit donc clairement que le champ est DATA, mais pour le bouton, y a rien. Il m'est donc impossible de cliquer sur le bouton. Tu n'aurais pas une solution ?
4 janv. 2007 à 06:57
un collègue MVP VB l'avait réalisé, je sais plus sur quel site, il s'agit de haute voltige, d'instanciation d'interface, avec TLB et tout le toutim, pour en gros "montrer patte blanche".
faisable, donc, mais pas aisément ^^
3 janv. 2007 à 15:00
Je suis pas un expert la dedans, pour mon code, j'y ai été en essaie et erreur surtout que la seule erreur que j'avais c'étais "objet invalide" et ça ma pris au moins 10 heures à percer le mystère puisque je n'avais pas le code source...
La commande links, je connais pas...
Sauf que c'est possible que tu aies raison, puisque on a le programme principale et celui de relève... celui de relève étant suposer une copie du principle, le meme code que j'ai mis pour le principale ne marche pas pour celui de relève ce qui semble absurde, sauf l'interface pointe probablement ses frames sur un autre serveur...
J'ai pas le moyen de le tester mais si j'avais à prendre un "guess" je dirais, essaie:
IE.document.frames(1).document.links.item(x)
1 = le 1er frame ...2 le 2e...etc
ou
IE.document.frames.NOMDUFRAME.document.links.item(x)
Faut simplement suivre le même paterne que sur
http://msdn.microsoft.com/library/default.asp?
T'affiche l'objet Internet Explorer et il indique les liens...
Évidement dans mon cas, ce qui m'a pris une éternité, c'est qu'il y avait un frame dans un frame et je savais pas...
3 janv. 2007 à 11:43
3 janv. 2007 à 11:33
J'ai toujours du mal avec les iframe ... quelle est la hierarchie de "IE.truc.machin.bidule" pour lister les links ( ...) qui sont dans une iframe ?
Ceux qui sont dans la page je les trouve sur IE.document.links.item(x) mais ceux de la frame je les cherche encore ...
19 déc. 2006 à 20:05
If InStr(1, IE.Document.frames.main.Location, "Le liens dans mon frame") = 0 Then
Call MsgBox("C'est le bon liens")
End If
19 déc. 2006 à 18:50
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
19 déc. 2006 à 18:49
Voici du code que peut-être certaines personne vont trouver intéressantes suite à quelques questions que j'ai vu rapidement.... mais faudra l'adapter à votre code
Public Monliens As String
Public IE As Object
Public Const vUrl = "whatever"
Public Const vTargetFrame = "main"
Public Const vPosteData = ""
Public Const vHeaders = ""
Public Const vFlags = ""
Dim AllIE As Object
Dim VerifURL As String
Dim i As Integer
Set AllIE = CreateObject("Shell.Application")
If Monliens = "" Then
Call MsgBox("msg d,erreur", vbCritical, "titre")
Exit Sub
End If
For i = 0 To AllIE.windows.Count - 1
If InStr(1, Monliens , AllIE.windows(i).locationurl, vbTextCompare) <> 0 Then
If Not AllIE.windows(i).busy Then
Set IE = AllIE.windows(i)
i = AllIE.windows.Count - 1
Else
Reponse = MsgBox("Le liens " & Monliens & " est présentement utilisé, voullez vous attendre que celui çi soit disponible", vbYesNo, "Connection utilisé")
If Reponse = 6 Then
While AllIE.windows(i).busy
DoEvents
Wend
IE = AllIE.windows(i)
i = AllIE.windows.Count - 1
End If
End If
End If
Next i
If IE Is Nothing Then
Reponse = MsgBox("Aucun liens (" & Monliens & "),Voullez-vous ouvrir le Portail?", vbYesNo)
If Reponse = 6 Then
Set IE = CreateObject("InternetExplorer.Application")
Call IE.navigate(Monliens , vFlags, vTargetFrame, vpostdata, vHeaders)
While IE.busy
DoEvents
Wend
Else
Call MsgBox("Désolé, aucune fenêtre Internet Explorer disponible", vbOKOnly)
Exit Sub
End If
IE.Document.frames.NAME.frames.NAME.Document.NAME.BOITE.Value = "whatever"
J'avais une question par contre, évidement si l'object désirer n'exite pas, cela me donne une erreur, comment puis-je gérer cette erreur....
Exemple, la dernière ligne indique que je veux mettre une valeur dans une boite, sauf que si un des frames n'est pas présent, je peux vouloir lui dire de faire un navigate, dans le cas contraire ne pas faire le navigate pour rien, puisque cela prends quelques secondes inutilement....
Merci
20 sept. 2006 à 14:10
20 sept. 2006 à 12:35
20 sept. 2006 à 12:23
Sinon, pour ton idée d'utiliser la frame comme adresse de départ, je vais essayer.
20 sept. 2006 à 12:00
tu peux peut-être utiliser directement l'URL de la frame en question, comme URL de départ.
20 sept. 2006 à 11:51
Mais j'ai un souci... Je cherche à utiliser cette technique pour me loguer sur un site mais je m'apperçois que les items que je dois utiliser ne font pas partie de la page principale mais d'une frame....
Comment interragir avec ses items ?
Merci d'avance pour ton aide.
31 juil. 2006 à 16:10
J'utilise un contrôle WebBrowser (intégré au framework .NET 2.0) et je rencontre un problème lors de l'impression d'une page HTML. J'ai essayé ta méthode citée plus haut, Renfield, mais le résultat est toujours le même, rien ne se passe quelque soit la méthode :
- méthode Print du WebBrowser
- méthode ExecCommand "Print" de WebBrowser.Document
- méthode ExecCommand "Print" de l'interface IHTMLDocument2
Quelqu'un aurait rencontré ce pb ou aurait une solution en .NET ?
Merci d'avance,
16 juin 2006 à 09:51
15 juin 2006 à 18:34
15 juin 2006 à 18:20
En tout cas bravo pour ta source, c'est genial mais ou as-tu appris tout sa ? j'ai cherché sur internet et j'ai rien trouvé qui expliquait les propriétés de IE.Document.
En fait je cherchait un moyen de choisir un lien au hazard sur la page et puis en suite aller sur ce lien, je suis sur que c'est possible mais je ne sais pas comment faire !
merci d'anvance !
19 mai 2006 à 10:44
(en utilisant, par exemple URLDownloadToFile)
19 mai 2006 à 10:40
Le site est en php, et après la recherche effectuée, le seul moyen d'extraire toutes les infos
sous un fichier excel est d'appeler la page "Export.php", qui, dès qu'on la charge, affiche la boite de dialogue afin d'ouvrir ou enregistrer le fichier.
Il n'y a pas de contenu HTML, cela provoque juste l'export par php sous un fichier de type excel.
Comment faire ?
Merci encore une fois pour ton aide
19 mai 2006 à 10:25
si tu as le code HTML, tu dois pouvoir en extraire les infos nécessaires au téléchargement 'manuel' du fichier (sans passer par la boite de dialogue)
19 mai 2006 à 10:16
Je me connecte à une appli intranet, me log, lance une recherche dans la base de l'appli (je ne peux passer que par l'interface intranet car on refuse de me donner un access en lecture sur la base...) puis, j'ouvre une url qui permet d'exporter le resultat de la recherche.
Cette page d'export m'ouvre une boite de dialogue me proposant d'ouvrir le fichier (format excel) ou de l'enregistrer. Dans mon cas, je souhaite l'enregistrer...
Comment faire ?
Merci de ton aide Renfield, ton code m'a déjà bien aidé
19 mai 2006 à 09:50
au pire, on sais intercepter les clicks sur les liens...
on peux alors annuler l'apparition de la fenetre (en renvoyant False), et s'occuper nous même du téléchargement du fichier
19 mai 2006 à 09:07
Tout d'abord félicitations pour cet excellent code !
J'aimerai savoir si quelqu'un sait comment interagir sur les prompts d'IE, par exemple si on ouvre une url d'un lien direct de téléchargement, comment valider l'enregistrement dans la fenetre de prompt d'IE ?
Une question qui se rapproche à celle de Polemos qui etait restée, me semble-t-il sans réponse.
Merci d'avance !
18 avril 2006 à 12:47
Car j'utilise VB5... donc évidemment, y'a un pitit problème ;)
M'enfin merci pour l'indication, ca m'évitera d'y passer 3 heures^^
18 avril 2006 à 08:11
je ne vois nulle part le code
Btn_Search.Enabled = True
Txt_Search.Enabled = True
utilises tu bien VB6?
17 avril 2006 à 15:30
J'ai cherché ca pendant pas mal de temps....
Cependant, j'ai un petit problème.
Lorsque je l'execute, il bugg là:
Btn_Search.Enabled = True
Txt_Search.Enabled = True
Par ailleurs, j'essaye de trouver les boutons, mais je n'arrive pas (lorsque je cherche dans la source).
bref, avez-vous une solution?
24 mars 2006 à 10:47
24 mars 2006 à 09:52
Je vois que l'on peut piloter IE à partir du code vb,
mais est-il possible de faire l'inverse ?
Je m'explique :
Je voudrais capter, dans mon programme vb, le clic sur un bouton, par exemple, de ma page web.
Est ce possible et comment ? (avec source à l'appui si c'est possible)
Merci
14 mars 2006 à 00:41
14 mars 2006 à 00:07
Merci
12 mars 2006 à 08:32
12 mars 2006 à 00:53
Avec ce code j'arrive a ecrire dans la page de www.ebay.fr en haut a droite dans "nouvelle recherche" du texte mais je n'arrive pas a valider avec le bouton "rechercher" car il n'as pas de nom.
Merci de m'aider.
13 févr. 2006 à 20:27
Merci à toi renfield
15 nov. 2005 à 15:21
IE.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER)
Encore merci pour ta source et tes reponses.
DevForce1-Julien
15 nov. 2005 à 12:35
Sais tu si il est possible de retirer le prompt de choix d'imprimante et d'en specifier une precisement?
15 nov. 2005 à 11:47
Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim Doc As IHTMLDocument2
Set Doc = IE.document
Pour imprimer, tu as la commande Print :
Doc.execCommand "Print"
15 nov. 2005 à 11:12
ta source m'interesse grandement et je me demandais comment tu declarais ton doc? Quel type etc...
En ce qui me concerne, je dois imprimer des documents HTML. J'arrive a les ouvrir mais pour les imprimer je seche un peu.
Merci de ton aide
10 nov. 2005 à 12:39
Set Doc = IE.document
Doc.execCommand ......
10 nov. 2005 à 12:08
10 nov. 2005 à 11:55
10 nov. 2005 à 11:37
execCommand(cmdID As String, [showUI As Boolean = Faux], [value])
tu peux faire par exemple :
execCommand("SaveAs", 1, "C:\MaPage.html")
10 nov. 2005 à 11:06
Merci d'avance!
27 mai 2005 à 09:01
Et lorsque que IE ouvre un msbox, sais-tu comment lui "parler" : cliquer sur le bouton de ton choix, ou saisir des infos ?
Cdt
Polemos
20 mai 2005 à 11:41
Je voudrais savoir comment faire pour manipuler par le code un InternetExplorer existant.
Je m'explique, dans votre code vous déclarer : dim IE as new InternetExplorer
ensuite vous lui affecter une adresse etc etc..
Moi ce que je veux en faite, c'est affecter à cette même variable IE, l'internet explorer qui est déjà ouvert sur mon poste...
Je ne dispose pas d'aide avec l'outil que j'utilise, et je voudrais savoir si quelqu'un à déjà fait cela.
Cordialement.
22 avril 2005 à 16:41
je n'en sais pas davantage de tête, dsl
22 avril 2005 à 14:34
Par contre j'ai un probleme, comment fait on si le bouton est un gif et donc n'a pas de "name"
exemple
<td height="15" align="right" valign="middle"></td>
Si quelqu'un pouvait m'aider
merci d'avance
30 mars 2005 à 17:17
Mille mercis pour ce code. C'est exactement ce que je cherchais et que j'ai fait de façon beaucoup plus compliqué.
Je refais tout avec ton code.
Saurais-tu me donner quelques infos pour récupérer les "name" d'un bouton à l'intérieur d'une frame en vu d'un click. ?
Pas de problème pour la page de premier plan mais je me perds dans l'arborescence des frames sur certain sites compliqués et je n'arrive pas à récupérer les infos des frames et de leur contenu.
Merci (1001) et A12C4
24 janv. 2005 à 22:10
reste a assembler le tout...
le tout est que tu soit un peu familier avec l'architecture de Windows
juste a te dire que pour agir sur un controle, il faut son Handle (hWnd) , que l'on peut récuperer via FindWindow et FindWindowEx
j'ai pas d'exemple, là, sous la main, dsl
mais le net est là, et tu devrais pouvoir y trouver ton bonheur
24 janv. 2005 à 16:41
24 janv. 2005 à 15:54
tu utilises FindWindow pour obtenir le handle des controles qui t'interessent, et avec des SendMessage ou autres API, tu peux piloter les actions de ton application...
24 janv. 2005 à 14:43
Mais est-il possible de faire la même chose avec une application Windows qui ne soit pas IE (ou un webBrowser) et qui ne supporte pas l'OLE (comme Word et Excel par exemple) ???
Merci
29 sept. 2004 à 15:47
Pourrais-tu expliquer ton code. J'ai essayé de le transcrire en VBA via Excel sans succès...
C'est le passage de la saisie dans un userform vers IE qui me bloque semble-til...
Cordialement
Polemos
31 août 2004 à 12:50
Merci pour ce code et je pense que c'est utile pour gérer un formulaire d'enregistrement d'un prog via ie !!
26 août 2004 à 08:48
Ton code est propre, ya rien à dire... Il faudrait trouver la solution pour piloter un autre navigateur...
9/10
25 août 2004 à 12:30
Merci qd meme ^^
25 août 2004 à 12:29
mais IE donne accès a pas mal d'objets qui permettent une certaine automatisation....(Comme le permettent Word ou Excel, également)
25 août 2004 à 12:22