macro VBA pour récuperer des données html

o5kiem

XLDnaute Nouveau
Bonjour à tous,

J'ai épluché le forum pour trouver une solution à macro sans succès.

Ma macro se trouve dans un useform de réservation de prestations audiovisuelles.
Elle pointe sur une page Web de réservation d'un pont de visioconférence

Jusque-là j'arrive à m'identifier sur le site avec login et mdp à pointer sur le formulaire de réservation d'une visioconférence.

une fois que l'utilisateur a rempli le formulaire sur la page html et qu'il a cliqué pour valider , j'aimerai récupérer avec ma macro sur la nouvelle page web avec les infos de connexion,une zone de texte commençant par "RMS reservation de visioconference ..." et la copier en commentaire sur mon tableau (ActiveCell.AddComment sur ma macro)
Voici le début de mon code :
----------------------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()

Const READYSTATE_COMPLETE = 4
Dim IE
Dim elementHtml As Object
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
With IE
.Navigate "http://rms.in2p3.fr/login.php"
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
End With
Set elementHtml = IE.Document.getElementById("identLogin")
elementHtml.Value = "identifiant"

Set elementHtml = IE.Document.getElementById("pwdLogin")
elementHtml.Value = "pwd"


Set ObjectIE = IE.Document.getElementById("login")
ObjectIE.Click


With IE
.Navigate "http://rms.in2p3.fr/newconf.php"
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop

--------------------------------------------------------------------------------------------------


Par avance merci pour vos réponses !
 

david84

XLDnaute Barbatruc
Re : macro VBA pour récuperer des données html

Bonjour,
si j'ai bien compris ce que tu veux faire, il te trouver dans la page Web la zone de texte contenant cette information.
Le langage utilisé est le HTML.
Ci-joint un lien te permettant de voir comment faire mais il te faut obligatoirement faire un travail de compréhension si tu veux y arriver.
Bon courage.
A+
 

o5kiem

XLDnaute Nouveau
Re : macro VBA pour récuperer des données html

Déjà, il faudrait dans la suite de ma macro que l'utilisateur cliques sur bouton "envoi" du formulaire pour afficher la réponse.
Ca serait donc une condition de type "if"
par exemple:
"If ObjectIE = IE.Document.getElementById("soumission") And ObjectIE.Click Then" et là je bloque ! il faudrait du coup lui indiquer sur la nouvelle page "http://rms.in2p3.fr/registerConf.php" la zone de texte<pre> (qui contient les informations que je souhaites copier.
Des idées ?
 

david84

XLDnaute Barbatruc
Re : macro VBA pour récuperer des données html

Bonjour,
Si je t'ai bien compris, tu veux pouvoir entrer un identifiant, un MDP et cliquer sur le bouton OK, est-ce cela ?
tu n'indiques pas exactement :
- ce que tu veux faire étape par étape
- les lignes de codes que tu as testées
- l'endroit où tu bloques.
Je veux bien t'aider à résoudre le problème mais pas faire à ta place.
Si tu as bien lu le tutoriel, tu devrais être capable d'afficher le code source de la page et de trouver les informations liés à chaque élément : est-ce le cas ?
Si c'est le cas, tu dois bloquer sur la manière d'exploiter les infos liées à l'une des 3 étapes (identifiant, MDP, clic sur ok) : dans ce cas :
- à quelle étape bloques-tu ?
- qu'as-tu testé comme code ?
- qu'est ce que tu n'arrives pas à obtenir ?
A+
PS : ton navigateur est bien Internet Explorer ?
 

o5kiem

XLDnaute Nouveau
Re : macro VBA pour récuperer des données html

Bonjour David,

Pour répondre à tes questions voici de nouveau mon code, sur internet explorer (en vert les annotations)
Private Sub CommandButton1_Click()

Const READYSTATE_COMPLETE = 4
Dim IE
Dim elementHtml As Object
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
With IE
.Navigate "http://rms.in2p3.fr/login.php" ---------ok charge la page
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
End With
Set elementHtml = IE.Document.getElementById("identLogin")
elementHtml.Value = "*****"-----------ok rentre le login dans la bonne case
Set elementHtml = IE.Document.getElementById("pwdLogin")
elementHtml.Value = "*****"----------- ok rentre le mdp dans la bonne case
Set ObjectIE = IE.Document.getElementById("login")
ObjectIE.Click ----------- ok valide en soumission
With IE
.Navigate "http://rms.in2p3.fr/newconf.php" ----------- ok va bien sur la page du formulaire
Do Until .ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
A Partir de cette nouvelle page du formulaire il y a un espace de saisie (date, heure de la conférence, titre etc..) que l'utilisateur doit remplir manuellement, je voudrais une fois avoir fini la saisie et soumis sur IE la page, copier les résultats de la feuille dans un commentaire (je pense savoir le faire). La ou je bloque c'est que je ne sais pas dans mon code comment attendre que l'utilisateur appuie sur le bouton "valider" sous IE pour continuer le reste de mon code
Set ObjectIE = IE.Document.getElementById("soumission")
Wait ObjectIE.Click ---------ko ne fonctionnes pas

J'espère être un peu plus claire dans mes explications David ! Par avance Merci
 

david84

XLDnaute Barbatruc
Re : macro VBA pour récuperer des données html

Bonjour,
outre le fait que je ne sois pas sûr d'avoir bien compris ta demande, sans id et mdp, je ne peux accéder à la page dont tu fais référence, donc je ne peux en rester qu'aux généralités.

As-tu essayé avec DoEvents ?
En fonction de ce que tu veux, soit DoEvents peut suffire, soit tu déclares le bouton Valider en tant qu'objet avec Set et tu fais ensuite une boucle Do Until...Loop avec la condition de clic sur le bouton de validation du type
Code:
Do Until MonBouton.clic=true
le code
Loop

Mais peut-être qu'une condition If...Then...Else peut suffir, du genre
Code:
If MonBouton.clic=true then
     code si on valide
Else
     code si on ne valide pas
End If
A+
 

o5kiem

XLDnaute Nouveau
Re : macro VBA pour récuperer des données html

Merci David,

J'avais déjà essayé les 2 solutions malheureusement il envoie dans tous les cas de figure le formulaire et comme toutes les zones de textes ne sont pas saisies j'ai une boite de message d'erreur internet explorer sur le formulaire (avec do Until ça boucle et impossible de sortir de la page IE) formulaire.jpg
 

Pièces jointes

  • formulaire.jpg
    formulaire.jpg
    128.2 KB · Affichages: 168
  • formulaire.jpg
    formulaire.jpg
    128.2 KB · Affichages: 164

david84

XLDnaute Barbatruc
Re : macro VBA pour récuperer des données html

Re
Si cela ne fonctionne pas comme cela, il te faut donc scinder ta procédure en 2 :
- une macro qui traite jusqu'au chargement de la page où se trouvent les données que l'utilisateur devra renseigner manuellement
- une autre qui est lancée par le clic sur le bouton de validation.
Si j'en crois ce qui est expliqué ici
il te faut passer par un module de classe afin de capter l'évènement de ce clic.
Regarde ce qu'il en est et dis-nous si tu trouves ton bonheur.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 485
Messages
2 088 805
Membres
103 971
dernier inscrit
abdazee