Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2011, 10h47   #1
Invité de passage
 
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Macro excel selectionner un élément (internet explorer)

Bonjour,
Je me présente, je m'appel Romain et je suis étudiant en informatique. Je suis actuellement entrain d'essayer de developper une application pour automatiser une recherche de donnés sur un site afin de les mettres dans un tableau excel.

Je me retrouve avec le code source suivant (qui fonctionne) mais la je suis face à un problème. Le site est très mal fait et aucune des balises n'a un id ou même un nom.
J'essaye d'acceder au texte de cette facon la mais ca ne fonctionne pas.
test = ie.document.body.div.div(5).div(2).Table.tr.td.Table.tbody.tr.td.p.Value (chemin trouvé avec firebug)
Avez-vous une solution svp?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    Set IE = CreateObject("InternetExplorer.Application")
 
    ' You can uncoment Next line To see form results
    IE.Visible = True
 
    ' Send the form data To URL As POST binary request
    IE.Navigate "http://arm"
 
 
    Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
 
    IE.Document.getElementById("toValidateBySaLink").Click
 
        Do While IE.Busy
        Application.Wait DateAdd("s", 1, Now)
    Loop
Merci de votre réponse.
romainR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 13h47   #2
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut re

Ton sujet m'interesse, peux tu me donner le code source de ta page?
J'ai un pb similaire sur une page à cause du balise de fin HTML qui est
placée en plein milieu du code et donc je n'arrive pas à récuperer les autres éléments (bouton, texte...).

Dis moi si c'est le même genre de problème?
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 17h09   #3
Invité de passage
 
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Bonjour,
Je ne peux pas montrer mon code html mais le site est correctement fait. Ma question est juste est-ce qu'on peux acceder à l'élement souhaité par cette méthode.

J'ai une nouvelle question : est-il possible de simuler un clique à un endroit précis de l'écran (en donnant une coordoné par exemple)?
romainR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 18h07   #4
Membre du Club
 
Homme
developpeur
Inscription : octobre 2011
Messages : 85
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : developpeur
Secteur : Distribution

Informations forums :
Inscription : octobre 2011
Messages : 85
Points : 63
Points : 63
Par défaut re

Actives les librairies Microsoft internet explorer et Microsoft html object library

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Dim bouton As Object
Dim Element As Object 
Dim ligne As Object 
 
Set Element= IE.Document.getElementsByTagName("INPUT")
 
For Each bouton In Element
    If bouton.Value = "le nom du bouton afficher sur la page" Then
        bouton.Click
        Exit For
    End If
Next bouton
Et pour ta deuxieme question ce code fonctionne, je tiens le focus sur l'élément de mon choix et je simule un click.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Set Element = IE.Document.getElementsByTagName("a")
appIE.Visible = True
 
For Each ligne In Element
    If ligne.innerHTML = "le nom du bouton afficher sur la page" Then
    ligne.focus
    Application.SendKeys ("~")
    Do While appIE.Busy
    Loop
    Exit For
    End If
Next ligne
lenovo49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/10/2011, 07h30   #5
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

+1 pour les librairies, mais du coup quitte à les référencer, autant les utiliser pour déclarer tes variables

Pour activer les références, tu dois aller dans le menu de VBa, Outils -> Références... dans la liste tu trouveras les 2 références cité par lenovo49

Code :
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
Sub RechercheVBAExcel()
'Déclaration des variables
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim InputGoogleZoneTexte As HTMLInputElement
Dim InputGoogleBouton As HTMLInputElement
 
'Chargement d'une page web Google
IE.Navigate "www.google.fr"
 
'On attend le chargement complet de la page
WaitIE IE
 
'Affichage de la fenêtre IE
Set IEDoc = IE.document
IE.Visible = True
 
'On pointe notre Zone de texte
Set InputGoogleZoneTexte = IEDoc.all("q")
 
'On défini le texte que l'on souhaite placer à l'interieur
InputGoogleZoneTexte.Value = "VBA Excel"
 
'On pointe notre bouton
Set InputGoogleBouton = IEDoc.all("btnG")
 
'On simule un clique
InputGoogleBouton.Click
 
'On attend la fin de la recherche
WaitIE IE
 
'On libere les variables
Set IE = Nothing
Set IEDoc = Nothing
End Sub
Voila un exemple simple.

Pour ce qui est d'un site n'ayant pas d'idname sur ses éléments, il existe d'autre solution de recherche, mais sans voir le code source :s ça va pas être facile.
Pour t'aider, utilise un espion sur la variable IEDoc et regarde sa structure, tu devrais pouvoir y trouver des équivalents au chemin que tu précises dans ton 1er message, en utilisant les méthodes "all", "childnodes",...
Il est aussi possible que les éléments soit distingué par leur ClassName, si c'est le cas j'ai fais une fonction qui permet d'en sortir la liste (c'est une ébauche de fonction, il faut que je la termine, elle fonctionne partiellement).

Toujours pour te facilité la vie, les explorateur internet récents fournissent des explorateur d'élément regarde sur Ie par exemple, il te permet d'analyser le code de ta page.


Bon courage.
++
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h48.


 
 
 
 
Partenaires

Hébergement Web