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 26/09/2011, 11h14   #1
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Par défaut Internet clique javascript:void(0)

Bonjour à tous.

J’essaie de coder un module en VBA qui ouvre internet explorer, se connecte à une page web puis clique sur un élément de cette page.

Après plusieurs jours de recherche je suis dans une impasse, impossible de "cliquer" sur cet élément :
Code html :
<a class="kd-button kd-button-red" href="javascript:void(0)" jsaction="mp.createMap" __jsaction="[object Object]" jstcache="0" __jstcache="[object Object]">
Et la ligne au-dessus :
Code html :
<div id="mp-create-map" jsdisplay="myplaces.filter==0||myplaces.filter==3" __jsaction="[object Object]" jstcache="41" __jstcache="[object Object]">
J’ai utilisé cette fonction :
Code :
1
2
dim IEdoc as HTMLdocument
IEdoc.parentWindow.execScript "'javascript:void(0)';", "javascript"
Dans VBE j’ai activé la référence Microsoft_JScript mais rien ne se passe avec ou sans.

Débutant en VBA je ne suis pas sure de suivre la bonne direction dans mes recherches pour trouver la solution, si quelqu'un peut me venir en aide. Cordialement.
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 21h41   #2
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
Essai de cette façon

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
37
38
39
40
41
Sub LancerScript()
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
 
	'Ouvre la page WEB + Affiche IE + Attente
	IE.Navigate "L'adresse de ta page"
	IE.Visible = True
	WaitIE IE
 
	'On pointe le document
	Set IEDoc = IE.document
 
    'On exécute le script void
    IEDoc.parentWindow.execScript "void(0)", "JavaScript" 'Attention à la casse
 
end sub	
 
'OU Lancer un lien hypertext	
Sub LancerHyper()
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
 
    'Ouvre la page WEB + Affiche IE + Attente
    IE.Navigate "L'adresse de ta page"
    IE.Visible = True
    WaitIE IE
 
    'On pointe le document
    Set IEDoc = IE.document
 
    'On cherche la ligne qui nous interesse
    IEDoc.getElementById("mp-create-map").Children(0).Click
 
End Sub
 
Sub WaitIE(IE As InternetExplorer)
	'On boucle tant que la page n'est pas totalement chargé
	Do Until IE.ReadyState = READYSTATE_COMPLETE
		DoEvents
	Loop
End Sub
++
Qwaz
__________________

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 10
Vieux 27/09/2011, 15h42   #3
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Par défaut Un grand merci Qwazerty

Bonjour Qwazerty,

Un grand merci à toi grâce à ta réponse après quelques essais voilà ce que j'ai du mon code :
Code :
1
2
3
Dim divHTMLCible As HTMLDivElement
Set divHTMLCible = IEdoc.getElementById("mp-create-map")
     divHTMLCible.Children(0).Click
ET CA FONCTIONNE PARFAITEMENT!

Maintenant j'ai un autre soucis! le formulaire apparait parfaitement et quand on pointe le premier champ à remplir voila ce que j'ai :
Code html :
1
2
3
4
5
<div class="label noprint">
Texte - Titre
<input tabIndex="100" class="inputField noprint" dir="ltr" maxLength="250" __e_="[object Object]" __jsaction="[object Object]" value="Sans titre"/>
<span class="noscreen " dir="ltr">
Texte - Sans titre

J'ai essayé un code du genre :
Code :
IEdoc.all("inputField noprint").Value = "nom de la carte"
Mais ça ne fonctionne pas! Le débugger me dit
Citation:
erreur d'éxecution '91', variable object ou variable de bloc with non définie.
Est ce que tu pourrais me conseiller?

En tous cas encore un grand merci à toi ça faisait 3 jours que je bloquais sur le déclenchement du script!
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 18h07   #4
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
Il faudrait voir une plus grande partie du code de la page, voir comment elle est organisé.
Tu ne peux recherché un éléments par id que si la propriété id est renseigné pour cet élément (et c'est pareil pour une recherche par Name).

++
Qwaz
__________________

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 10
Vieux 27/09/2011, 19h46   #5
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Par défaut code HTML element

Bonsoir Qwazerty,

Je vais essayé de suivre ton conseil pour la recherche par élément.

Sinon voici le code source de l'élément en espérent que ce soit bien ce que tu m'as demandé :
Code html :
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN"><META http-equiv="Content-Type" content="text/html; charset=utf-8">
 
<html class="no-maps-mini">
<head><style>
body
{
	color: #000;
	background-image: none;
	background-attachment: scroll;
	background-repeat: repeat;
	background-position-x: 0%;
	background-position-y: 0%;
	background-size: auto;
	background-origin: padding-box;
	background-clip: border-box;
	background-color: rgb(255, 255, 255);
}
.panel-width
{
	width: 29.32em;
}
body
{
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	margin-left: 0px;
}
#spsizer
{
	clear: both;
}
.subpanel
{
	margin-left: 10px;
}
#spsizer
{
	overflow: auto;
	position: relative;
}
body
{
	color: #000;
	font-family: arial,sans-serif;
	font-size: 13px;
}
input
{
	color: #000;
	font-family: arial,sans-serif;
	font-size: 13px;
}
.subpanel
{
	padding-top: 18px;
}
.no-maps-mini
{
	overflow: hidden;
}
.no-maps-mini body
{
	overflow: hidden;
}
#page
{
	width: 100%;
	position: relative;
}
#panel
{
	left: 0px;
	top: 58px;
	position: absolute;
	z-index: 3;
	background-color: rgb(255, 255, 255);
}
.small #panel
{
	top: 44px;
}
div
{
	padding-top: 0px;
	padding-right: 0px;
	padding-bottom: 0px;
	padding-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	margin-left: 0px;
}
.ms
{
	margin-bottom: 10px;
}
.ms .inputField
{
	width: 100%;
}
.msMapTitle
{
	width: 92%;
}
.msMapTitle .title
{
	font-size: 123%;
	font-weight: bold;
}
.msMapTitle .title, .msMapTitle .description
{
	margin-right: 6px;
	margin-bottom: 0.2em;
}
.msMapTitle .title div, .msMapTitle .description div, .msMapTitle .title input
{
	width: 100%;
}
.msMapTitle .title .inputField
{
	font-size: 100%;
}
 
</style></head>
<body class="msie msie-after-6 kui small" dir="ltr"><div id="page"><div><div class="panel-width" id="panel" style="height: 392px;" oi="maps"><div class="cs" id="spsizer" style="height: 388px;"><div class="opanel css-3d-bug-fix-hack" id="opanel1000"><div class="subpanel ms" id="panel1000"><div><div><div class="msMapTitle"><div align="left" class="title" dir="ltr"><div>
 
<input tabIndex="100" class="inputField noprint" dir="ltr" type="text" maxLength="250" />
 
</div></div></div></div></div></div></div></div></div></div></div></body></html>

Merci à toi.
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 06h50   #6
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

Ta page ne contient qu'un seul Input, tu peux donc rechercher ton élément via son tag (Input) en faisant comme ça

Code :
1
2
Dim AllElem As IHTMLElementCollection  
Set AllElem = IEDoc.getElementsByTagName("Input")
AllElem va contenir tous les éléments dont la balise est Input, un seul élément dans le cas de ta page.

Tu peux donc l'utiliser comme ceci
Code :
AllElem(0).Value = "......"

++
Qwaz
__________________

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 10
Vieux 28/09/2011, 14h58   #7
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Par défaut c'est génial!!!

Bonjour Qwazerty,

Le code source HTML que j'ai posté hier n'est pas l'intégralité de la page mais seulement l'élément que je voulais cibler.

Après avoir suivi ton instruction :
Code :
Set AllElem = IEDoc.getElementsByTagName("Input")
J'ai obtenu 35 item!

Mais grâce a toi j'ai compris comment l'on fait pour sélectionner n'importe quel élément d'un code source HTML.

Je viens de finir de pointer tous les éléments qui m'intéresse (INPUT, TEXTAREA, bouton radio etc...) et d'éditer chacune de leur valeur.

Et tout fonctionne pour le mieux, j'espère pouvoir rendre la pareil un jour!
Encore MERCI!!!
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h08.


 
 
 
 
Partenaires

Hébergement Web