p
u
b
l
i
c
i
t
é
Les rubriques (actu, forums, tutos) de Développez
Tags
Réseaux sociaux
29   0


 Discussion forum

Manipulation d'Internet Explorer via VB

Le , par Qwazerty, Expert Confirmé Sénior
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 Qwazerty Qwazerty - Expert Confirmé Sénior 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 Confirmé 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 - Invité régulier http://www.developpez.com
le 14/03/2015 à 22:15
Génial

merci énormément à tous les deux Patrick et Qwaz !
Avatar de Sebphyto Sebphyto - Membre actif http://www.developpez.com
le 22/04/2015 à 9:20
Bonjour le Forum et neouu,

Aurais-tu une première ébauche de code?

C plus simple pour nous

Seb
Avatar de patricktoulon patricktoulon - Expert Confirmé Sénior http://www.developpez.com
le 22/04/2015 à 9:37
bonjour neou

tout dabors tu aurais du ouvrir un nouveau post
en suite je suis allé voir ta page

en effet on recupere rien parceque il y a rien a recupérer les carrés avec "N en rouge" ou "X dans un fond vert"

sont des images générées par la classe de style

classe
score1
scrore score 1
scroreN
etc.......

en fait pour retranscrire ca dans tes cellules tu va devoir astucer
en gros le shema qu'il te faut
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
set matable=document.getelementsbytagname("tr") 
 for e= 0 to matable.children.length 
for i = 0 to matable(e).children.length 
if matable(e).chidren(i).classename='score1 then  
cells(e+1,i+1)='par exemple X envert  
 
'etc..... pour toute les classe de style  
end if  
next 
next
mais bon avec IE c'est coton tu va t'amuser

essaie plutôt une requête
je l'ai fait hier soir c'est plus approprié pour ce genre d'exercice

transfert on post
Avatar de patricktoulon patricktoulon - Expert Confirmé Sénior http://www.developpez.com
le 22/04/2015 à 16:52
neou va voir ICI
Avatar de haribo91 haribo91 - Candidat au titre de Membre du Club http://www.developpez.com
le 29/04/2015 à 11:31
Bonjour,

D'abord un grand bravo pour cet excellent tuto .

Pour ma part j'ai une question sur les listes déroulantes. Tu a montré comment sélectionner un item dedans ou comment récupérer tous les choix de cette liste, mais sur certains site lorsque l'on sélectionne un item et bien la page change en fonction de celui-ci.

Or avec la méthode de sélection que tu as décrite, rien ne se passe. Enfin le bon item est sélectionné dans la liste, mais la page ne change pas pour autant, et il n'y a pas de bouton "OK" pour valider mon choix sur la page..

Peux-tu m'aider sur ce point ?

Merci.

Haribo.
Avatar de PhilippeF75 PhilippeF75 - Invité de passage http://www.developpez.com
le 12/05/2015 à 5:26
Tout d'abord bonjour à tous et merci pour ce tuto très instructif qui m'a décidé à ré-écrire des macros en VBA pour automatiser certains accès à une BDD sur un site professionnel sécurisé.
Je précise que j'avais déjà écrit de telles macros quelques années auparavant et que tout marchait bien. Mais depuis, mon PC et ses logiciels ont changé et là rien ne va plus...
Je précise d'abord que je suis sous W7 Édition familiale Premium SP1 64 bits, avec Office pro + 2010 (v.14.0.7147.5001 32 bits) et donc VBA (v.7.0.1628), avec IE11 (v.11.0.9600.17691 màj 11.0.17 32 bits semble-t-il) ; je précise également que Java 32 bits et 64 bits sont à jour également.
Évidemment, les références HTML Object Library et Internet Controls sont activées et pas qu'elles.

Mon problème dès le code de base du tuto : j'ai l'erreur "objet non défini" sur la ligne Set IEDoc = IE.document alors qu'il est préalablement bien défini par "Dim IEDoc As HTMLDocument" donc, avant le WaitDoc...

Merci d'avance et à la prochaine car mes problèmes vont encore au-delà, mais pas tout en même temps !
Avatar de Sebphyto Sebphyto - Membre actif http://www.developpez.com
le 12/05/2015 à 8:42
Bonjour PhilippeF75,

Si tu as besoin ouvre un nouveau post et nous nous ferons un plaisir de t'aider...

A+
Avatar de ThaHardy ThaHardy - Nouveau 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 Confirmé Sénior http://www.developpez.com
le 04/06/2015 à 16:20


Bonjour,

voir post #115 …
Offres d'emploi IT
Artisan développeur h/f
CDI
Société Générale - Ile de France - Paris La Défense
Developpeur web & mobile
Alternance Stage
HUMBRAIN - Ile de France - Paris (75000)
Technicien poste client (H/F)
CDD
AGENCE SUPPLAY - Alsace - Strasbourg (67000)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Visual Basic 6 : Philippe Baquer -