VBA - IE - piloter une boîte de dialogue "téléchargement de fichier"

Victoire

XLDnaute Nouveau
Bonjour à tous,

Comme cela fait un certain temps que je cherche une solution à mon problème, je m'en remets à vous
Je cherche un moyen de créer une macro qui permettrait, à partir d'un fichier excel A:
1/ d'ouvrir Internet Explorer,
2/ de se connecter à un site avec un pseudo/mot de passe,
3/et de faire un export de données du site à partir de critères définis (le site permet d'exporter un nouveau fichier excel B avec certaines données que je souhaite ensuite copier et coller dans le fichier excel initial A).


Jusqu'à présent, j'ai réussi les étapes 1 et 2, mais je bloque à la 3: j'ai sélectionné les critères de recherche correctement sur le site internet, et j'ai réussi à cliquer sur le bouton "OK" qui permet de lancer l'extraction, mais là les choses se corsent:
Quand on clique sur ce bouton OK, une nouvelle page internetexplorer s'ouvre, qui contient une boîte de dialogue IE "téléchargement de fichiers" dans laquelle il faut cliquer sur "Ouvrir". Mais impossible de pointer sur cette boîte de dialogue et d'actionner le bouton :(

J'ai trouvé sur le web divers bouts de code utilisant les API findwindow, findwindowEx... mais qui ne marche pas
(le bout de code suivant, qui permet de récupérer le handle de la fenêtre "téléchargement de fichier", me retourne toujours "window not found"):

Code:
 Dim Ret As Long
 
    Ret = FindWindow(vbNullString, "Téléchargement de fichiers")
 
    If Ret <> 0 Then
        MsgBox "Window Found"
    Else
        MsgBox "Window Not Found"
    End If
(NB: j'ai pris soin avant de déclarer la fonction findwindow)

J'ai essayé en changeant le nom de la fenêtre, "Téléchargement de fichiers", Téléchargement de fichier", "File Download"... il ne la trouve pas.

J'ai essayé également de pointer sur la seconde fenêtre IE qui s'affiche, et de faire un sendkeys pour sélectionner le bouton "ouvrir", mais sans succès:

Code:
 [B] Dim winShell As New ShellWindows
     
    On Error Resume Next
     
    For Each IE In winShell
        If IE.LocationURL = "www.siteinternet.com" Then
           IE.Visible = True
            'IE.Quit 'option pour les fermer
        End If
    Next IE
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys "{ENTER}", True[/B]


Sinon, je me demande s'il n'existe pas un moyen d'éviter de passer par cette seconde fenêtre IE qui finit par m'empoisonner la vie :D. Sur le bouton OK de la première fenêtre, il y a un attribut HTML "onclick" :
Code:
document.forms['Criteria'].action='download/export_report.asp?ID=641'; document.forms['Criteria'].target='_blank'
je pourrais peut-être en tirer profit, mais je ne sais pas comment?

J'ai beau chercher, je ne trouve pas..
Je vous remercie d'avance de vos réponses, et n'hésitez pas à me signaler si je n'ai pas été assez claire dans ma demande!
Merci
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
96
Réponses
9
Affichages
149

Statistiques des forums

Discussions
312 083
Messages
2 085 173
Membres
102 806
dernier inscrit
rle