Comment :
-Cliquer sur un lien javascript
-Contrôler de Internet Explorer
-Remplir un formulaire automatiquement
Permet de cliquer sur un lien javascript de la forme "javascript:newFormulaire()" depuis une appli VBA donc VB.. mais aussi de remplir un formulaire et de valider mais d'autres sources existent pour cela (d'ailleur partie reprise de ces sources dont je remercie les auteurs).
Après de multiples parcours sur VBFrance je n'avais pas trouvé de source permettant de cliquer sur un lien javascript autrement que par son numero d'index dans la collection renvoyée et j'ai pu trouver mon bonheur avec la liste des méthodes, collections, propriétés de IE un peu compliqué mais appréciable quand même :D içi ->
http://msdn2.microsoft.com/en-us/library/ms537465(VS.85).aspx#
Ps: penser à rajouter les références Microsoft Internet controls et Microsoft HTML Object Library... ça aide plutôt pas mal pour la complétude du code !!
Source / Exemple :
Option Explicit
'Constantes pour l'état d'IE
Private Const READYSTATE_INTERACTIVE = 3
Private Const READYSTATE_COMPLETE = 4
Private Sub RellenarForm()
Dim IE As InternetExplorer
'Créer un objet internet Explorer
Set IE = CreateObject("InternetExplorer.Application")
'le rend visible
IE.Visible = True
'en plein écran
IE.TheaterMode = True
'ouvre une page...
IE.Navigate "http://www.identifietoi.com"
'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
'Rempli les champs (idUser et mdp sont les NAMES à repéré dans la source de la page web)
IE.Document.all("idUser").Value = "Jeannot" 'textbox...
IE.Document.all("mdp").Value = "motdepasse" 'textbox...
'Valide le formulaire
IE.Document.Forms(0).submit
'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
'Clique sur le lien javascript d'après sont id (dans la source aussi)
IE.Document.Links().namedItem("idlinknewdoc").Click
'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
'Boucle parcourant tous les objets de la page jusqu'à celui que l'on souhaite
For i = 0 To IE.Document.all.Length - 1
'ici on test si c'est le contrôle voulu avec un de ses attributs puis on clique
If IE.Document.all.Item(i).Value = "Cercar" Then
If err.Number = 0 Then
IE.Document.all.Item(i).Click
Else
err.Clear
End If
End If
Next
'attend que la page soit chargée
Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
Set IE = Nothing
End sub
Conclusion :
N'hésitez pas pour les remarque c'est ma première source :D
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.