Remplir formulaire HTML par macro VBA

JerCaz

XLDnaute Occasionnel
Bonjour le forum,

Dans l'hôpital où je travaille, il existe une application web permettant d'envoyer des SMS en interne sur certains N° de postes.
Grâce à l'aide du forum, j'ai réalisé une application sous excel (2002-2003) permettant d'envoyer un mail aux membres du groupe PMO quand un patient est amené aux urgences avec un score de Glasgow inférieur ou égal à 6.

Mon objectif serait d'envoyer un SMS sur le téléphone du coordonnateur d'astreinte en plus du mail envoyé.

J'ai donc cherché sur le web comment faire, j'ai trouvé quelques explications, mais je n'arrive pas à les mettre en pratique...
Ce lien n'existe plus
pge html cases à remplir, entraide, FAQ, conseils, avis, Visual Basic, Développement

Dans ma page web, la variable "no" correspond au N° de téléphone à entrer (de type INPUT); la variable "msg" est le champ dédié au message à envoyer (de type TEXTAREA); sendMsg correspond au bouton à cliquer pour envoyer le message.

J'ai activé les références suivantes:
Microsoft Internet COntrols
Microsoft HTML object library

Ensuite, j'ai créé un UserForm que j'ai maissé nommé par défaut "UserForm1", dans lequel j'ai ajouté le contôle WebBrowser que j'ai laissé nommé par défaut "WebBrowser1".

puis voici le code que j'ai essayé d'adapter (sans succès...)

Code:
Sub EnvoiSMS()

Dim htmlPage As HTMLDocument
Dim htmlElement As HTMLObjectElement
Dim no As HTMLObjectElement
Dim msg As HTMLObjectElement
Dim sendMsg As HTMLObjectElement

UserForm1.WebBrowser1.Navigate ("http://10.30.11.210/")

Do
    DoEvents
Loop Until Not UserForm1.WebBrowser1.Busy

Set htmlPage = UserForm1.WebBrowser1.Document

Set no = "4009"  'N° de poste sur lequel envoyer le SMS"
Set msg = "test envoi sms depuis appli VBA excel"
sendMsg.Click

End Sub


Je ne suis pas très doué en VBA, encore moins en HTML...

Si quelqu'un parmis-vous pouvait éclairer ma lanterne, je lui serais vraiment reconnaissant...

Vous remerciant par avance pour l'aide que vous pourrez donc m'apporter,
Bien cordialement.
 
Dernière édition:

JerCaz

XLDnaute Occasionnel
Re : Remplir formulaire HTML par macro VBA

Merci klin89!

A l'évidence, tu sais beaucoup mieux que moi utiliser la fonction "recherche" sur le forum, car je n'avais pas trouvé ce fil de discussion... C'est pour ça que je m'étais rabattu sur mon ami google...

Pour le moment, je n'ai pas encore réussi à résoudre mon problème, mais grâce aux indices que tu me fournis, j'arrive à compléter mes champs "no" et "msg".
Il ne me reste plus qu'à trouver comment simuler le click sur sendMsg et l'affaire sera dans le sac!
 

JerCaz

XLDnaute Occasionnel
Re : Remplir formulaire HTML par macro VBA

C'est bon, j'ai résolu mon problème!
Là où je n'arrivais pas à atteindre le bouton "envoi" (j'ai l'impression que sendMsg n'est pas une variable, mais une instruction javascript), j'ai contourné le problème en utilisant des "sendkeys"... C'est pas très propre comme code, mais ça a le mérite de fonctionner! (vu mon niveau, je vais m'en contenter....)

Donc, si quelqu'un un jour tombe sur mon sujet, voici comment j'ai modifié le code:

Code:
Sub EnvoiSMSv2()
    Const READYSTATE_COMPLETE = 4
    Dim IE
    Dim elementHtml As Object
    
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = True
    With IE
        .Navigate "http://10.30.11.210/"
        Do Until .ReadyState = 4                      '
            DoEvents
        Loop                                          'attend la fin du chargement
    End With
    Dim bOk As Boolean
    Set elementHtml = IE.Document.getElementById("no")
    If Not elementHtml Is Nothing Then
        bOk = True
        elementHtml.Value = "4009"
        Set elementHtml = IE.Document.getElementById("msg")
        If Not elementHtml Is Nothing Then
            bOk = True
            elementHtml.Value = "test envoi SMS par macro VBA"
            

SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{ENTER}"


        Else
            bOk = False
        End If
    Else
        bOk = False
    End If
    DoEvents
    Set IE = Nothing
   If bOk Then MsgBox "connexion réussie!" Else MsgBox "connexion échouée!"

End Sub

Un grand merci au forum, particulièrement à Klin89 qui m'a aidé à me mettre sur la bonne voie...
 

klin89

XLDnaute Accro
Re : Remplir formulaire HTML par macro VBA

Bonjour JerCaz,

Dans ton code, pour simuler le click de ton bouton, as-tu essayé ceci ?

Code:
.../....
Set elementHtml = IE.Document.[COLOR="Red"]forms(0)[/COLOR]'Voir si changer l'index
If Not elementHtml Is Nothing Then
    bOk = True
    [COLOR="red"]elementHtml.submit[/COLOR]
Else
    bOk = False
End If
.../...

A la place de ceci :

Code:
.../...
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{ENTER}"
.../...

Sinon fais une recherche dans google comme ceci, tu vas sûrement trouver la solution.

site:excel-downloads.com IE.Document

Klin89
 

JerCaz

XLDnaute Occasionnel
Re : Remplir formulaire HTML par macro VBA

Bonjour Klin89,
effectivement, j'avais essayé avec
Code:
Set elementHtml = IE.Document.forms(0)
mais ça ne simulait pas mon click.
j'avais donc essayé avec forms(1), sans plus de succès.

Alors ensuite, j'avais essayé avec ces deux possibilités (forms(0) et forms(1)) mais en remplaçant
Code:
elementHtml.submit
par
Code:
elementHtml.click
toujours sans succès.

Je dois avouer que n'étant pas très à l'aise avec le VBA, je fais beaucoup de tests... (je ne connais pas toutes les fonctions et leurs nuances comme par exemple la différence entre .submit et .click, je suis donc obligé de tester... mais c'est comme ça que j'apprends!)

En tout cas, encore un grand merci à toi de t'être penché sur mon problème ;)
 

Discussions similaires