FAQ Office 2010

FAQ Office 2010Consultez toutes les FAQ
Nombre d'auteurs : 2, nombre de questions : 114, dernière mise à jour : 15 juin 2021
Sommaire→Access→Contrôle WebBrowser- Comment remplir une zone de texte dans un contrôle WebBrowser ?
- Comment savoir si une page Web contient un formulaire donné ?
- Comment savoir si une page Web contient au moins un formulaire ?
- Comment connaître le nombre de formulaires présents dans une page Web ?
- Comment lister le nom des formulaires présents dans une page Web ?
- Comment attendre la fin de chargement d'une page dans un contrôle WebBrowser?
- Comment modifier l'adresse du contrôle WebBrowser ?
- Comment connaître l'adresse de la page actuelle d'un contrôle WebBrowser ?
- Comment connaître le titre de la page actuelle d'un contrôle WebBrowser ?
- Comment revenir à la page précédente dans un contrôle WebBrowser ?
- Comment revenir à la page suivante dans un contrôle WebBrowser ?
- Comment rafraîchir la page actuelle d'un contrôle WebBrowser ?
- Comment connaître l'état d'un contrôle WebBrowser ?
- Comment récupérer le code HTML d'un WebBrowser ?
- Comment récupérer le code HTML du Body dans un WebBrowser ?
- Comment savoir si un lien existe dans une page web ?
- Comment naviguer vers un lien ?
- Comment savoir si un lien possède une url donnée dans une page web ?
- Est-il possible d'afficher un PDF dans un formulaire ?
- Comment afficher une table dans un WebBrowser ?
- Comment empêcher la navigation vers une page inexistante ?
Pour remplir une zone de texte dans une page Web, utilisez la syntaxe .All(NomElement).Value.
Exemple de code HTML :
<html>
<head>
<title>Page d'essai</title>
</head>
<body>
<form name="frmEssai">
<input type="text" name="txtZone1"/>
</form>
</body>
</html>Exemple de code VBA :
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
oWeb.Document.All("txtZone1").Value = "Essai"Vous pouvez utiliser la fonction suivante :
Function ExistFormulaire(strNom As String, oWeb As WebBrowser) As Boolean
On Error GoTo err
Dim o As Object
Set o = oWeb.Document.Forms(CStr(strNom))
ExistFormulaire = (o.Name = strNom)
err:
End FunctionL'appel à CStr permet de corriger un bug qui apparaît parfois et empêche l'accès à l'item concerné.
Exemple d'utilisation :
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
If ExistFormulaire("frmEsshai", oWeb) Then
MsgBox "Le formulaire exishte"
Else
MsgBox "Le formulaire n'existe pas"
End IfPour savoir si la page Web chargée dans un contrôle WebBrowser contient au moins un formulaire, effectuez un test sur la propriété Length de la collection Forms.
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
If oWeb.Document.Forms.length = 0 Then
Debug.Print "La page ne contient pas de formulaires"
Else
Debug.Print "La page contient au moins un formulaire"
End IfPour connaître le nombre de formulaires d'une page Web chargée dans un contrôle WebBrowser, utilisez la propriété Length de la collection Forms.
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
MsgBox oWeb.Document.Forms.lengthPour lister les formulaires d'une page Web chargée dans un contrôle WebBrowser, parcourez la collection Forms à l'aide d'une boucle For Each.
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
Dim oForm As Object
For Each oForm In oWeb.Document.Forms
Debug.Print oForm.Name
Next oFormPour attendre la fin de chargement de la page, une des possibilités consiste à tester, dans une boucle, le contenu de la propriété ReadyState du contrôle.
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
MsgBox oWeb.Document.titlePour modifier l'adresse du contrôle WebBrowser dans un formulaire, vous pouvez utiliser la syntaxe suivante :
Me.MonWebBrowser.Object.Navigate "http://www.developpez.net"Pour connaître l'adresse de la page actuelle d'un contrôle WebBrowser dans un formulaire, vous pouvez utiliser la syntaxe suivante :
Debug.Print Me.MonWebBrowser.Object.LocationUrlPour connaître le titre de la page actuelle d'un contrôle WebBrowser dans un formulaire, vous pouvez utiliser la syntaxe suivante :
Debug.Print Me.MonWebBrowser.Object.TitlePour revenir en arrière dans un contrôle WebBrowser, utilisez la méthode GoBack comme ci-dessous :
Me.MonWebBrowser.Object.GoBackSi aucune page précédente n'est disponible, l'erreur -2147467259 sera levée.
Pour aller en avant dans un contrôle WebBrowser, utilisez la méthode GoForward comme ci-dessous :
Me.MonWebBrowser.Object.GoForwardSi aucune page suivante n'est disponible, l'erreur -2147467259 sera levée.
Pour rafraîchir la page actuelle d'un contrôle WebBrowser, utilisez la méthode Refresh comme ci-dessous :
Me.MonWebBrowser.Object.RefreshInterrogez la prioriété ReadyState pour connaître l'état de votre contrôle WebBrowser.
Voici les deux constantes les plus fréquemment utilisées.
- READYSTATE_COMPLETE = 4 : chargement terminé
- READYSTATE_LOADING = 1 : chargement en cours
Utilisez la méthode ci-dessous pour récupérer le code HTML de la page actuelle du WebBrowser :
Debug.Print Me.MonWebBrowser.Object.Document.documentElement.outerHtmlUtilisez la méthode ci-dessous pour récupérer le code HTML du corps de la page actuelle du WebBrowser :
Debug.Print Me.MonWebBrowser.Object.Document.Body.InnerHtmlUtilisez OuterHtml en remplacement de InnerHtml si vous souhaitez obtenir les attributs de la balise body.
La fonction suivante retourne True si le lien contenant le texte spécifié a été trouvé.
Exemple de code HTML :
<html>
<head>
<title>Page d'essai</title>
</head>
<body>
<form name="frmEssai">
<input type="text" name="txtZone1"/>
</form>
<a href="essai2.html">Continuer</a>
</body>
</html>Fonction de recherche :
Function ExistLien(strText As String, oWeb As WebBrowser) As Boolean
Dim oLink As Object
For Each oLink In oWeb.Document.links
If oLink.outertext = strText Then
ExistLien = True
Exit For
End If
Next oLink
End FunctionExemple d'utilisation dans un formulaire :
Private Sub Command1_Click()
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
If ExistLien("Continuer", oWeb) Then
MsgBox "Le lien a été trouvé"
End If
End SubLa fonction suivante retourne l'url d'un lien contenant le texte passé en paramètre. L'utilisation de cette valeur de retour avec la méthode Navigate de l'objet WebBrowser permet de suivre ce lien.
Exemple de code HTML :
<html>
<head>
<title>Page d'essai</title>
</head>
<body>
<form name="frmEssai">
<input type="text" name="txtZone1"/>
</form>
<a href="essai2.html">Continuer</a>
</body>
</html>Fonction de recherche :
Function GetUrl(strText As String, oWeb As WebBrowser) As String
On Error GoTo err
Dim oLink As Object
For Each oLink In oWeb.Document.links
If oLink.outertext = strText Then
GetUrl = oLink.href
Exit For
End If
Next oLink
err:
End FunctionExemple d'utilisation dans un formulaire :
Private Sub Command1_Click()
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
Dim strUrl As String
strUrl = GetUrl("Continuer", oWeb)
If strUrl <> "" Then
oWeb.Navigate strUrl
Else
MsgBox "Le lien n'a pas été trouvé"
End If
End SubLa fonction suivante retourne True si l'url passée en paramètre a été trouvée dans un lien de la page.
Exemple de code HTML :
<html>
<head>
<title>Page d'essai</title>
</head>
<body>
<form name="frmEssai">
<input type="text" name="txtZone1"/>
</form>
<a href="essai2.html">Continuer</a>
</body>
</html>Fonction de recherche :
Function ExistLien(strUrl As String, oWeb As WebBrowser) As Boolean
On Error GoTo err
Dim oLink As Object
For Each oLink In oWeb.Document.links
If InStr(1, oLink.href, strUrl) > 0 Then
ExistLien = True
Exit For
End If
Next oLink
err:
End FunctionExemple d'utilisation dans un formulaire :
Private Sub Command1_Click()
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
If ExistLien("essai2.html", oWeb) Then
MsgBox "Le lien a été trouvé"
End If
End SubOui. Pour cela, la solution la plus simple consiste à utiliser un contrôle WebBrowser. Le navigateur se charge alors d'utiliser l'application adéquate (en l'occurence un lecteur PDF) sous forme d'Add-In.
Private Sub Command2_Click()
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\journal.pdf"
End SubUn contrôle WebBrowser peut afficher n'importe quel code HTML valide défini dans sa propriété Body.InnerHtml. L'exemple suivant présente le contenu de la table Customers :
Function Query2Html(strQuery As String) As String
Dim strRtn As String
Dim oDb As DAO.Database
Dim oRst As DAO.Recordset
Dim oFld As DAO.Field
Set oDb = CurrentDb
Set oRst = oDb.OpenRecordset(strQuery)
'Ecriture de l'entête
strRtn = "<table><tr>"
For Each oFld In oRst.Fields
strRtn = strRtn & "<th>" & oFld.Name & "</th>"
Next oFld
strRtn = strRtn & "</tr>"
'Ecriture des différentes lignes
While Not oRst.EOF
strRtn = strRtn & "<tr>"
For Each oFld In oRst.Fields
strRtn = strRtn & "<td>" & oFld.Value & "</td>"
Next oFld
strRtn = strRtn & "</tr>"
oRst.MoveNext
Wend
strRtn = strRtn & "</table>"
Query2Html = strRtn
End FunctionPrivate Sub btnAfficher_Click()
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Document.body.innerhtml = Query2Html("customers")
End SubLorsque le WebBrowser rencontre une erreur, son évènement NavigateError est déclenché. En fixant le paramètre Cance à True, la navigation est interrompue.
Private Sub MyOWeb_NavigateError(ByVal pDisp As Object, _
URL As Variant, _
TargetFrameName As Variant, _
StatusCode As Variant, _
Cancel As Boolean)
MsgBox "La page n'est pas accessible, navigation annulée"
Cancel = True
End Sub


