VBA Interaction avec Internet Explorer telechargement impossible

Signaler
-
Messages postés
13
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
7 octobre 2013
-
Bonjour à tous !

Je bidouille un peu en vba et j'aimerais arriver à manipuler une feuille web depuis un doc Excel. Plus précisément j'aimerais télécharger un contenu avec un code vba.

Je me suis inspiré de l'excellent didacticiel : http://qwazerty.developpez.com/tutor...excel/#LIV-B-3 grâce auquel je suis arrivé à mon but, mais, car bien sûr il y a un « mais » d'où l'objet de mon message, la structure du site web et IE m'empêche d'arriver à mes fins : je m'explique :

Grace au didacticiel je suis arrivé à faire ce code :
Sub PremierIE()
'Déclaration des variables
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim Exportbutton As HTMLInputElement
 
'Chargement d'une page web Google
   IE.navigate "monsiteweb.com"
 
'Affichage de la fenêtre IE
IE.Visible = True
 
WaitIE IE
'On pointe le membre Document
Set IEDoc = IE.document
 
'On pointe notre bouton
Set Exportbutton = IEDoc.all("export")
 
'On simule un clic
Exportbutton.Click
 
'On attend la fin de la recherche
WaitIE IE
 
'On libère la variable IE
'Set IE = Nothing
 
'On ferme la variable IE
IE.Quit
 
End Sub
 
Sub WaitIE(IE As InternetExplorer)
   'On boucle tant que la page n'est pas totalement chargée
   Do Until IE.readyState = READYSTATE_COMPLETE
      DoEvents
   Loop
End Sub

Il me permet de simuler un clic sur le bouton et lancer le téléchargement de mon fichier.
MAIS Internet Explorer m'empêche alors de télécharger le fichier en affichant un petit ruban jaune en haut de ma page web :
"To help protect your security, Internet Explorer blocked this site from downloading files to your computer."

Après des recherches sur le net, j'ai trouvé que si on ajouté le site web à ses sites autorisés dans l'onglet sécurité de IE ça désactive ce message : le problème est que mon entreprise à désactivé l'accès à l'onglet sécurité !
Du coup : Est-ce que quelqu'un sait comment désactiver ce message de sécurité ou comment le gérer depuis vba ? Je n'ai pas trouvé

Autre solution envisagé :

J'ai lu dans le didacticiel que l'on pouvait aussi soumettre le formulaire plutôt que simuler un clic sur un bouton. Dans ma page web, les codeurs on inclut ce code dans leurs form :

<form action="/00OU00000019RdZ" id="report" method="POST" name="report" onsubmit="if (window.ffInAlert) { return false; }">

En effet lorsqu'on clic manuellement, et pas depuis vba, sur le bouton télécharger, on n'a pas de message d'erreur grâce à ce code. Je pense donc que si j'arrive à "submit" le formulaire depuis VBA je n'aurais plus mon problème.

MAIS car il y a toujours un mais, je n'y arrive pas car à submit le formulaire car il contient 2 boutons submit :


<input value="Export" class="btn" title="Export" name="export" type="submit">
<input value=" Done " class="btn" title="Done" name="cancel" type="submit">

Et manque de chance quand je submit le form "report" avec ce code :


Sub PremierIE2()
'Déclaration des variables
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim Exportbutton As HTMLFormElement
 
'Chargement d'une page web Google
IE.navigate "monsiteweb"
 
'Affichage de la fenêtre IE
IE.Visible = True
 
WaitIE IE
 
'On pointe le membre Document
Set IEDoc = IE.document
 
'On pointe notre bouton
Set Exportbutton = IEDoc.all("report")
 
'On simule un clic
Exportbutton.submit
 
'On attend la fin de la recherche
WaitIE IE
 
'On libère la variable IE
'Set IE = Nothing 
'On ferme la variable IE
IE.Quit

Et bien ce n'est pas le bouton "export" qui est activé mais le bouton "done". D'où ma question sauriez-vous comment choisir le bouton, l'input, qui s'active lorsque que je "submit" le formulaire ??

J'espère que j'aurais été assez clair dans le descriptif de ma problématique, n'hésitez pas à me poser des questions complémentaire si t'elle n'est pas le cas.

Je vous remercie d'ores et déjà pour le temps accordé à la lecture de mon message.

Bien à vous,

Raphael.

1 réponse

Messages postés
13
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
7 octobre 2013
1
Bon 3 pistes : (Que je ne peux tester, car j'ai pas l'environnement.)

1) d'après votre code, en j'essayerais çà :
'On pointe notre bouton
Set Exportbutton = IEDoc.all("export")
'On simule un clic
Exportbutton.Submit

2) Sinon, je pense que cette solution fonctionnera :
IEDoc.Document.getElementById("export").Focus
Application.SendKeys "{ENTER}", True

3) et pourquoi pas :
IEDoc.Document.getElementById("export").Submit