Manipulation d'Internet Explorer via VB

Le , par Qwazerty, Expert éminent
Salut

Je vous propose un tutoriel sur l’interaction entre Excel VBA et Internet Explorer.

Les sujets développés sont
  • la déclaration des variables
  • la navigation dans le code source d'une page
  • récupérer et saisir des données, agir sur des boutons, des liens, des cases à cocher...
  • le téléchargement de fichiers
  • adapter ses méthodes d'interaction en fonction du contenu de la page
  • un rappel sur l'utilisation des espions et des point d'arrêt


Afin d'y parvenir, vous trouverez dans ce document des exemples concrets mettant en pratique une partie des méthodes fournies par VBA pour manipuler le contenu d'une page Web. Nous développerons par exemple un code visant à obtenir les résultats du loto sportif ou encore la sélection d'un trajet sur le site de la SNCF.

Merci de laisser sur ce topic votre avis sur mon document, toutes les critiques constructives sont les bienvenues .

Si vous avez la flemme de taper, pensez à minima à noter la discussion

Bonne lecture et bon apprentissage

++
Qwaz


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de michel3131 michel3131 - Futur Membre du Club http://www.developpez.com
le 13/03/2015 à 23:27
Merci beaucoup pour ta réponse, cela fonctionne ... et je peux continuer mes essais.

Bonne soirée.
Avatar de michel3131 michel3131 - Futur Membre du Club http://www.developpez.com
le 14/03/2015 à 17:23
Bonjour,

Je continue mes essais : j'ai écrit un code qui récupère des données sur un site web, on remplit un formulaire et on récupère un fichier Excel. Après avoir simulé le clic dans la macro vba, et avant que le fichier Excel distant ne s'ouvre, j'ai une fenêtre Windows qui me demande si je veux ouvrir, enregistrer, ou annuler.

Sauriez-vous svp comment gérer ce type de fenêtre dans la macro vba, Est-ce possible ou connaît-on des contournements ?

merci d'avance
Avatar de Qwazerty Qwazerty - Expert éminent http://www.developpez.com
le 14/03/2015 à 17:48
Salut

Fais quelques recherches sur le forum, plusieurs personnes ont déjà demandé cela, il y a des solution avec des Sendkey, des solution si le fichier à une adresse précise qui peut être appelée sans actionner le bouton.
Il me semble que Marc-L a mis une contribution en ligne pour pallier au problème à l'aide de sendkey je crois.

++
Qwaz
Avatar de patricktoulon patricktoulon - Expert éminent sénior http://www.developpez.com
le 14/03/2015 à 19:23
Bonjour
une approche dont je me sert a adapter a ton cas
les ligne rouge sont a adapter
une méthode parmi d'autre
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub test_recupfichierexcel() 
    
    Dim IE As Object 
         Set IE = CreateObject("internetexplorer.application")  'instancie l'Object 
    URL = "https://www.bla bla bla" 
    IE.navigate URL 
    IE.Visible = True 
    Do: DoEvents: Loop Until IE.readyState = 4 And IE.busy  
   
 ' peut être qu'ici il va te falloir manipuler un bouton pour déclencher la fenêtre de téléchargement voir le tuto de qwazerty sur ce sujet     
     
Application.Wait (Now + TimeValue("0:00:05")) 
    SendKeys "{Tab}" 
    SendKeys "{Tab}" 
    SendKeys "{Enter}" 
    
   waitfichier "chemin complet du fichier" '(en général c'est le chemin des téléchargement sur W7) 
    
    IE.Quit 
   
     Application.DisplayAlerts = False 
    Application.ScreenUpdating = False 
   
set wbk2 = Workbooks.Open("chemin complet du fichier")    ' 
     
     
End Sub 
Sub waitfichier(fichier) 
    Do: DoEvents: Loop Until Dir(fichier, vbHidden) <> "" 
End Sub
Avatar de michel3131 michel3131 - Futur Membre du Club http://www.developpez.com
le 14/03/2015 à 22:15
Génial

merci énormément à tous les deux Patrick et Qwaz !
Avatar de ThaHardy ThaHardy - Membre du Club http://www.developpez.com
le 04/06/2015 à 12:35
Bonjour a tous,

Tout d'abord merci pour ce tuto qui est trés bien fait, et bien pratique !
J'ai juste un petit probléme, en effet j'ai mis un espion sur IEdoc comme j'ai vu d'en un autre commentaire car l'espion sur IE ne m'affichait pas les Items, cependant au moment de comparer l'arboresence il manque des Items et je ne peux pas continuer mon travail du fait que l'Item qui m'interesse pour prendre du texte dans la page n'apparait pas. quelqu'un aurait-il une idée du comment et du pourquoi ?
J'ai essayé de voir en mettant l'attente de chargement de la page mais cependant cela ne fonctionne toujours pas.
Je vous joins mon code:
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Option Compare Database 
Option Explicit 
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 
Sub RechercheVBAExcel() 
 
'Déclaration des variables 
Dim IE As New InternetExplorer 
Dim IEDoc As HTMLDocument 
Dim InputGoogleZoneTexte As HTMLInputElement 
Dim InputGoogleBouton As HTMLInputElement 
Dim FormGoogleCherche As HTMLFormElement 
    
   'Chargement d'une page Web Google 
   IE.navigate "www.google.com/finance" 
    
   'Affichage de la fenêtre IE 
   IE.Visible = True 
    
   'On attend le chargement complet de la page 
   WaitIE IE 
    
   'On pointe le membre Document 
   Set IEDoc = IE.Document 
    
   'On pointe notre Zone de texte 
   Set InputGoogleZoneTexte = IEDoc.all("q") 
 
   'On définit le texte que l'on souhaite placer à l'intérieur 
   InputGoogleZoneTexte.Value = "VSAR" 
 
   'On pointe notre bouton 
   Set InputGoogleBouton = IEDoc.all("gbqfb") 
 
   'On simule un clic 
   InputGoogleBouton.Click 
  
   'On attend le chargement complet de la page 
   WaitIE IE 
   
  'On libère les variables 
   Set IE = Nothing 
   Set IEDoc = Nothing 
    
  End Sub
Merci d'avance

Cordialement

TH
Avatar de Marc-L Marc-L - Expert éminent sénior http://www.developpez.com
le 04/06/2015 à 16:20


Bonjour,

voir post #115 …
Avatar de YOBEN YOBEN - Nouveau Candidat au Club http://www.developpez.com
le 25/10/2015 à 21:35
Bonjour,

Merci Qwazerty pour ce tuto très bien construit et très pédagogue !

Je suis débutant et j'ai pour ma part téléchargé le fichier source que tu as mis à disposition, et malgré avoir coché les 2 références j'ai un message d'erreur de compilation qui apparaît en m'indiquant de mettre à jour le code contenu pour pouvoir etre utilisé sur les systèmes 64 bits. aussi ce message indique de mettre a jour les instructions Declare, puis de les marquer avec l'attribut PtrSafe.

Quelqu'un a t il eu le meme problème que moi ? merci de vos réponses
Avatar de kiki29 kiki29 - Expert éminent sénior http://www.developpez.com
le 26/10/2015 à 0:07
Salut, à lire et appliquer : Développer avec Office 64 bits, d'autant plus que même Microsoft déconseille l'installation d'une version 64 bits d'Office.

extrait :
Office 32 bits est recommandé pour la plupart des utilisateurs

Nous recommandons la version 32 bits d’Office pour la plupart des utilisateurs, car elle offre une plus grande compatibilité avec la plupart des autres applications, en particulier les compléments tiers. C’est la raison pour laquelle la version 32 bits d’Office 2013 est installée par défaut, même sur les systèmes d’exploitation Windows 64 bits. Sur ces systèmes, le client Office 32 bits est pris en charge en tant qu’installation Windows-32-on-Windows-64 (WOW64). WOW64 est l’émulateur x86 qui permet l’exécution de façon transparente des applications Windows 32 bits sur les systèmes Windows 64 bits. Cela permet aux utilisateurs de continuer à utiliser les contrôles ActiveX et les compléments COM Microsoft avec la version 32 bits d’Office.

Avatar de mimidodo mimidodo - Candidat au Club http://www.developpez.com
le 02/11/2015 à 13:05
Bonjour à tous,
Merci beaucoup pour le tuto. J'ai commencé a utiliser IE en dehors d'un userform et en m'inspirant des codes de ce tuto, je suis face à un petit souci:
_Je déclare oNav et je navige sur un URL ..... là cava
_j’attends le chargement de la page ... OK
_Je déclare oDoc = oNav. document ..... là cava
_Je rempli des champs dans la page pour un login et je clic sur le bouton login,..... toujours Bon
_J'attends le chargement pour constater que je suis bien enregistré sur la page .... C'est bon
_Je vide oDoc= Nothing, puis je remet oDoc = oNav.document pour m'assurer que oDoc est cette fois le document de la nouvelle page bien fraîche mais là c'est pas le cas en vérifiant les éléments dans oDoc, j'ai toujours le document d'avant. Pire, je n'arrive pas à quitter oNav si un nouvel URL s'ouvre sur celui ci.

Je sais que le souci n'est pas si difficile mais c'est dingue que je n'arrive pas à comprendre. Quelqu'un pourrait me conseiller s'il vous plait?
Excusez moi à l'avance du dérangement .
Avatar de Qwazerty Qwazerty - Expert éminent http://www.developpez.com
le 20/10/2014 à 19:39
Salut

Merci pour la précision Marc, je n'ai jamais rencontré ce problème.

bonne soirée
++
Qwaz
Offres d'emploi IT
Développeur concepteur agile h/f
Alternance
Société Générale - Ile de France - Fontenay-sous-Bois (94120)
Chef de projet technique java h/f
CDI
altima - Nord Pas-de-Calais - Roubaix (59100)
Développeur ios junior H/F
Stage
Tawimi - Ile de France - Paris (75000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Visual Basic 6