IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Office 2010

FAQ Office 2010Consultez toutes les FAQ

Nombre d'auteurs : 2, nombre de questions : 114, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireAccessContrôle WebBrowser
précédentsommairesuivant
 
 

Pour remplir une zone de texte dans une page Web, utilisez la syntaxe .All(NomElement).Value.

Exemple de code HTML :

 
Sélectionnez
<html>
<head>
	<title>Page d'essai</title>
</head>
<body>
<form name="frmEssai">
<input type="text" name="txtZone1"/>
</form>
</body>
</html>

Exemple de code VBA :

 
Sélectionnez
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"
Créé le 14 novembre 2009  par Christophe Warin

Vous pouvez utiliser la fonction suivante :

 
Sélectionnez
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 Function

L'appel à CStr permet de corriger un bug qui apparaît parfois et empêche l'accès à l'item concerné.

Exemple d'utilisation :

 
Sélectionnez
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 If
Créé le 14 novembre 2009  par Christophe Warin

Pour 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.

 
Sélectionnez
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 If
Créé le 14 novembre 2009  par Christophe Warin

Pour 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.

 
Sélectionnez
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.length
Créé le 14 novembre 2009  par Christophe Warin

Pour 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.

 
Sélectionnez
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 oForm
Créé le 14 novembre 2009  par Christophe Warin

Pour 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.

 
Sélectionnez
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
oWeb.Navigate "c:\essai.html"
While oWeb.ReadyState <> READYSTATE_COMPLETE
  DoEvents
Wend
MsgBox oWeb.Document.title
Créé le 14 novembre 2009  par Christophe Warin

Pour modifier l'adresse du contrôle WebBrowser dans un formulaire, vous pouvez utiliser la syntaxe suivante :

 
Sélectionnez
Me.MonWebBrowser.Object.Navigate "http://www.developpez.net"
Créé le 1er novembre 2009  par Christophe Warin

Pour connaître l'adresse de la page actuelle d'un contrôle WebBrowser dans un formulaire, vous pouvez utiliser la syntaxe suivante :

 
Sélectionnez
Debug.Print Me.MonWebBrowser.Object.LocationUrl
Créé le 1er novembre 2009  par Christophe Warin

Pour connaître le titre de la page actuelle d'un contrôle WebBrowser dans un formulaire, vous pouvez utiliser la syntaxe suivante :

 
Sélectionnez
Debug.Print Me.MonWebBrowser.Object.Title
Créé le 1er novembre 2009  par Christophe Warin

Pour revenir en arrière dans un contrôle WebBrowser, utilisez la méthode GoBack comme ci-dessous :

 
Sélectionnez
Me.MonWebBrowser.Object.GoBack

Si aucune page précédente n'est disponible, l'erreur -2147467259 sera levée.

Créé le 1er novembre 2009  par Christophe Warin

Pour aller en avant dans un contrôle WebBrowser, utilisez la méthode GoForward comme ci-dessous :

 
Sélectionnez
Me.MonWebBrowser.Object.GoForward

Si aucune page suivante n'est disponible, l'erreur -2147467259 sera levée.

Créé le 1er novembre 2009  par Christophe Warin

Pour rafraîchir la page actuelle d'un contrôle WebBrowser, utilisez la méthode Refresh comme ci-dessous :

 
Sélectionnez
Me.MonWebBrowser.Object.Refresh
Créé le 1er novembre 2009  par Christophe Warin

Interrogez 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
Créé le 1er novembre 2009  par Christophe Warin

Utilisez la méthode ci-dessous pour récupérer le code HTML de la page actuelle du WebBrowser :

 
Sélectionnez
Debug.Print Me.MonWebBrowser.Object.Document.documentElement.outerHtml
Créé le 1er novembre 2009  par Christophe Warin

Utilisez la méthode ci-dessous pour récupérer le code HTML du corps de la page actuelle du WebBrowser :

 
Sélectionnez
Debug.Print Me.MonWebBrowser.Object.Document.Body.InnerHtml

Utilisez OuterHtml en remplacement de InnerHtml si vous souhaitez obtenir les attributs de la balise body.

Créé le 1er novembre 2009  par Christophe Warin

La fonction suivante retourne True si le lien contenant le texte spécifié a été trouvé.

Exemple de code HTML :

 
Sélectionnez
<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 :

 
Sélectionnez
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 Function

Exemple d'utilisation dans un formulaire :

 
Sélectionnez
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 Sub
Créé le 15 novembre 2009  par Christophe Warin

La 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 :

 
Sélectionnez
<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 :

 
Sélectionnez
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 Function

Exemple d'utilisation dans un formulaire :

 
Sélectionnez
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 Sub
Créé le 15 novembre 2009  par Christophe Warin

La 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 :

 
Sélectionnez
<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 :

 
Sélectionnez
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 Function

Exemple d'utilisation dans un formulaire :

 
Sélectionnez
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 Sub
Créé le 15 novembre 2009  par Christophe Warin

Oui. 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.

 
Sélectionnez
Private Sub Command2_Click()
  Dim oWeb As WebBrowser
  Set oWeb = Me.MyOWeb.Object
 
  oWeb.Navigate "c:\journal.pdf"
End Sub
Créé le 15 novembre 2009  par Christophe Warin

Un 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 :

 
Sélectionnez
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 Function
 
Sélectionnez
Private Sub btnAfficher_Click()
Dim oWeb As WebBrowser
Set oWeb = Me.MyOWeb.Object
 
oWeb.Document.body.innerhtml = Query2Html("customers")
End Sub
Créé le 15 novembre 2009  par Christophe Warin

Lorsque le WebBrowser rencontre une erreur, son évènement NavigateError est déclenché. En fixant le paramètre Cance à True, la navigation est interrompue.

 
Sélectionnez
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
Créé le 15 novembre 2009  par Christophe Warin
précédentsommairesuivant
 
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.