Communication vba internet explorer

Résolu
jejelechasseur Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 26 mars 2006 - 23 mars 2006 à 18:04
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 26 mars 2006 à 21:32
Bonjour,

Dans un formulaire Access, j'ai intégré un objet ole pour faire afficher une page HTML qui affiche donc une page que je créé en fonction de l'enregisteremnt sur lequel je suis actuellement.
Dans ma page internet, j'ai plusieurs boutons.

Je voudrai savoir si je peux envoyer des informations à mon programme access pour savoir sur quel bouton j'ai cliqué et donc faire un traitement spécifique dans le programme access en fonction du bouton cliqué.

Par avance merci

6 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
24 mars 2006 à 23:47
Ca y est,

Dans ton contrôle ActiveX (dans l'exemple : ctlAXforWeb), tu déclares une propriété de référence à un objet de ton choix dans le futur conteneur, par exemple, le formulaire Access parent du WebBrowser. Cela donne quelque chose (je le fais court, il va sans dire qu'un ActiveX se doit de traiter toutes les erreurs qu'il peut, c'est bien pour ça que l'on protège les membres) approchant ce qui suit :

Private m_ParentForm As Access.Form 'membre privé (tu auras noté qu'il est nécessaire d'ajouter la référence à Access 11 dans l'ActiveX)

Public Property Get ParentForm() As Access.Form
'C'est un résultat de succès de la propriété en cours
Set ParentForm = m_ParentForm
End Property


Public Property Set ParentForm(ByVal vNewValue As Access.Form)
'C'est l'affectation, au membre de la propriété en cours, de la valeur reçue
Set m_ParentForm = vNewValue
End Property

Ensuite, tu prépares ta page HTML , avec la balise objet pour instancier ton ActiveX, et tu fais un link pour ton script (c'est toujours mieux, un script externe). Pour ça, pas d'exemple, tu sais le faire.

Enfin, dans Access, tu charges la page HTML dans le WebBrowser, et tu fais :

Private m_axAX As Object ' ou le type de ton ActiveX
Private m_docTemp As Object

Private Sub Commande0_Click()
With Me
'récupère le document (du DOM IE)
Set m_docTemp = .WebBrowser0.Object.Document
'récupère la référence à l'HTMLinstance de ton contrôle
Set m_axAX = m_docTemp .all("ctlAXforWeb").Object ' il est possible qu'ici, tu soulèves des problèmes liés à tes réglages de sécurité Web, à toi de les régler
'passe à ton contrôle la référence au formulaire courant
Set m_axAX .ParentForm = Me
End With
End Sub

A présent, dans ton script VBScript, ton ActiveX a sa référence ParentForm renseignée, il peut donc s'en servir pour accéder à tous ce qui est Public pour cette instance de Form. Et donc, tu peux écrire :

Sub ctlAXforWeb_HasBeenSituated()
MsgBox document.ctlAXforWeb.ParentForm.Name
End Sub

J'ai mis des types génériques pour que l'exemple soit facile à mettre en oeuvre. Cependant, ce n'est pas très rigoureux. Il vaut mieux typer fort, par contre, c'est très contraignant dans un tel environnement. A toi aussi de trouver les meilleurs évènements pour fixer les références (OnInitialize, OnLoad, ...)

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
3
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
24 mars 2006 à 00:51
Salut jejelechasseur,

je pense que oui, enfin, je pense que oui tu peux essayer.
Il te faudrait néamoins VB pour le mettre au point. Je m'explique :

Mon avis, c'est qu'à partir d'un script client de page HTML, tu peux tenir les évènements déclenchés par les contrôles de ta page HTML.
Ensuite, à partir de ces poignées, tu remonter le modèle objet du document et en resortir jusqu'au conteneur (et même plus), et sollicité des méthodes, propriétés de n'importe quelle classe de ton applicatif.

Je le fais personnellement dans des pluggins, mais à la différence de toi, c'est en VB, et j'utilise un WebBrowser et des DocAX, mais je le faisait aussi avec WebBrowser et page HTML + ActiveX, et dans ces conditions, je suis sûr de la faisabilité.

Par contre, j'ai bien peur qu'Access n'arrive pas à situer un WebBrowser sur un UserForm (si tu y arrives, merci de me prévenir).

L'idée serait donc de mettre au point ton script en VB/WebBrowser (parce que le WebBrowser est mieux documenté et plus transparent que l'OLE), de le porter en VB/OLE, de l'ajuster, au cas où le nombre de couches ne serait pas le même, et de le porter en Access/OLE.

ça fait peut-être peur comme ça, mais pas de gloire sans périls,
et puis à la finale, ça va plutôt tout seul.

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
jejelechasseur Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 26 mars 2006
24 mars 2006 à 09:13
Pour afficher un WebBrowser dans un formulaire access, il faut faire "Insertion, controle activeX, Navigateur Web Microsoft."

Qu'est ce que des docAX pour toi ?

Sinon, tu aurais un exemple de code pour ta solution WebBrowser + html-activeX ?

Merci.
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
24 mars 2006 à 20:45
Salut jejelechasseur,

je rentre du boulot, donc pas d'exemple tout de suite.
Au sujet de "Insertion, controle activeX, Navigateur Web Microsoft.", c'est énervant de passer à côté de choses aussi simples (quand on est pris par le temps), enfin, ça n'esquivera pas un grand merci de ma part!

Enfin, Document ActiveX, c'est une dll (ou un exe), contenant tes modeles objet, et se comportant comme une applet (fonctionne dans un conteneur quand il y a une UI). Elle est compilée, le client ne voit donc pas les sources, et l'ergonomie de l'UI est sans communes mesures.

Par contre, le seul inconvénient, c'est que sa donne du client riche (presque toute la logique métier est sur le client), mais dans ton cas, c'est pas génant (pas de clients multiples, donc, bien répartit).

j'ai faim,
à+, et bon we.

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jejelechasseur Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 26 mars 2006
26 mars 2006 à 20:33
Merci pour ton explication.



J'avais trouvé par l'aide d'un autre forum la réponse à ma question, mais c'est le même principe que ce que tu utilises.



Merci encore
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
26 mars 2006 à 21:32
Bien, bien,

content pour toi.

Que la force soit avec toi, et que cela ne t'empêche pas de valider la réponse!

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
Rejoignez-nous