arrives tu a passer d'onglet en onglet en injectant un script java?
le contenue de ta page est strictement comme dans tes imprimes écran?
si oui http://www.developpez.net/forums/d13...a/#post7341139
arrives tu a passer d'onglet en onglet en injectant un script java?
le contenue de ta page est strictement comme dans tes imprimes écran?
si oui http://www.developpez.net/forums/d13...a/#post7341139
Alors oui le contenu de ma page est strictement comme dans les imprimés d'écran.
Et non, il semblerait que le réseau Intranet de l'entreprise empêche l'éxécution de script java injecté dans le code. J'ai vérifié, toutes mes options Internet autorisent l'exécution de script, mais Internet me répète à chaque fois que "Internet Explorer a modifié cette page pour empêcher le script de site à site".
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
Bonjour
a tu seulement essayé de manipuler le li ?
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Oui j'ai essayé ne t'en fais pas pour ça, de pleins de manières différentes (en l'attribuant à un objet HTMLDocument, un objet, un onbjet HTML Liste, ..., en essayant de récupérer sa valeur pour ensuite effectuer un click et récupérer les informations, ou encore en chargeant le document en entier pour ensuite utiliser la méthode d'accès à la liste spécifique et ainsi sauver le nouveau document et accéder au tableau, et autres...) avec tous les différents codes proposés, les miens (j'en ai 3 similaires qui fonctionnent pour récupérer des tables HTML) et d'autres encore trouvés ici et là...
Mais si tu avais lu mes précédents messages, j'expliquais que l'accès se faisait bien (je l'observe en utilisant l'espion VBA) cependant le document ne récupère jamais la valeur de la page onglet, mais toujours de la page initiale.
Je me demande donc si ce n'est pas un problème de sécurité réseau interne de mon entreprise...
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
Tu as testé ça?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2IE.Document.parentWindow.execScript "javascript:selectionner(31);"
Oui et dans le même genre :
et tout ce qui peut s'y rapprocher de près ou de loin
Code : Sélectionner tout - Visualiser dans une fenêtre à part Ie.Document.parentWindow.execScript("javascript:selectionner(31)","JavaScript")
(Notamment l'insertion du code java directement dans l'URL)
Mais le problème reste encore et toujours le même, ça ne me permet pas d'accéder à la page dans le deuxième onglet, je m'explique clairement :
Le code de redirection fonctionne, je suis redirigé vers la page qui m'intéresse, MAIS, chaque fois que j'enregistre la page (avec IE.Document et tout ce qui va avec, ou encore les méthodes "POST" et "GET" avec ".open" et la suite), c'est la page de l'onglet initial qui est enregistrée. Donc toutes les tables et informations de la première page (trajet) et non pas de la seconde ("critères"). C'est comme si j'étais redirigé automatiquement par le composant avant de pouvoir effectuer toute action dessus.
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
reoui en effet je connais le soucis en fait la page est bien comme je le présentais prtégée par googleappsonwindowsC'est comme si j'étais redirigé automatiquement par le composant avant de pouvoir effectuer toute action dessus
j'ai palier au meme probleme pour sebphyto tu n'a qu'a regarder dans la discution il y a 26 pages je crois ca te fera de la lecture
sans cette astuce c'est walouh!!!!!!! et a ma connaissance personne n'a trouvé autre chose
regarede si dans le code html de la page tu n'aurais pas un truc du genre
si c'est le cas j'ai raison il va te faloir synder le code et le réinjecter dans un htmldocument pour l'exploiter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <script type="text/javascript"> window.___gcfg = {lang: 'fr'}; (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); </script> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Tu as regardé le lien que je t'ai donné plus haut, il fait un select hall de la page et la copie dans le presse papier ensuite tu n'as plus qu'à la collé dns Excel!
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
Bonjour
fait moi plaisir ,prend un fichier vierge ,met lui un module standard et colle ce code dans ce module
adapte l'url et la mise en place des logins et mots de passe eventuellement a l'endroit ou je l'ai indiqué
voila quoi qu'il se passe tu devrait avoir tes reponses soit sur le sheets soit dans la fentre d'execution ce qui devrait te donner la marche a suivre selon le résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub test() Dim IE As Object, mestables As Object, monmenu As Object, url As String, mesLI As Object, texte As String, e As Long, i As Long url = "http://blablablabla" ' met ton url ici!!!!!! Set IE = CreateObject("internetexplorer.application") IE.Visible = True IE.navigate url Do: DoEvents: Loop While IE.readystate <> 4 Or IE.busy ' ici adapte tes mot de passe et tout ca ne connaissant pas l'url je ne sais pas donc a toi de voir Set doc = IE.document Set monmenu = doc.getelementbyid("ong3") 'on cible le menu"ong3" Set mesLI = monmenu.getelementsbytagname("li") 'on recupere tout les li dans le menu For i = 0 To mesLI.Length -1 'on boucle sur tout les li Debug.Print mesLI(i).innertext ' pour verifier dans la console (fenetre d'execution si ils sont bien identifiés mesLI(i).Children(0).Click ' le href est dans la balise "a" enfant du li 'si le a n'est pas cliquable essaie 'mesli(i).click Do: DoEvents: Loop While IE.readystate <> 4 Or IE.busy ' peut etre qu'ici il faudra mettre un sleep la boucle sur le readystate ne suffira pas : avec la fonction WAIT de excel pourquoi pas 2 secondes au max Set mestables = doc.getelementsbytagname("table") 'on recupere la collection des tables For e = 0 To mestables.Length -1 'on boucle sur toutes les tables Debug.Print mestables(e).innertext ' on peut voir le innertext de la table dans la fentre d'execution texte = texte & mestables(e).outerhtml & "<br>" Next Next IE.Quit 'maintenant que l'on devrait avoir le code html de toutes les table trouvées on le place dans le clipbord d'un documenthtml en memoire (htmldocument) 'meme pas besoins de mettre le code html dans le document juste son clipboard With CreateObject("htmlfile") If .parentWindow.clipboardData.setData("Text", texte) Then ' on mlet le contenu de texte da ns le clipbord du htmldocument Application.ScreenUpdating = False With Sheets(1) ' a adapter a ton cas .Activate .Cells.Clear Cells(1, 1).Select ' a adapter a ton cas .Paste ' et enfin on colle le tout dans le sheets End With .parentWindow.clipboardData.clearData "Text" 'et voila c'est fini on vide le clipboard du document html virtuel End If End With End Sub 'si le resultat ne correspond pas a tes attentes avant de tirer des conclusions regarde dans la fenetre d'execution!!!!!!
edit:
j'ai corrigé les "s" manquand a mestables dans le code
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Bonjour,
Moi ce que j'avais compris, c'est que tu pouvais naviguer d'onglets en onglets mais que tu ne pouvais pas faire référence à l'objet document pour récupérer le script HTML.
Donc si cette fois j'ai bien compris, quand tu est sur le bonne onglet, tu ne peux pas faire ça: Ie.Document.parentWindow.execScript "javascript:Alert('toto');" ?
Merci pour le code, il est très similaire à celui que j'avais utilisé, mais la différence se fera peut-être au niveau du click de la liste, car c'est vrai que je n'avais pas demandé l'attente du chargement complet de la page pour faire la suite.
Je ne pourrai tester que Lundi, mais je vous donnerai les résultats dès 9H.
Et encore merci pour tout le temps que vous prenez pour m'aider
Tout à fait, c'est comme si le contenu de mon second onglet n'était pas mis à jour
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
En revanche je pense que ça doit marcher si tu encapsule ton lien dans des frams?
L'objet documents n'est plus concerné par le restriction javascript et ta navigation ce fait. Sur document.Bas!
Code document.HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <FRAMESET ROWS="20%, 80%"> <FRAME SRC="frame1.htm" NAME="haut"> <FRAME SRC="frame2.htm" NAME="bas"> </FRAMESET>
Dernière modification par Invité ; 28/11/2015 à 12h55.
désolé mais Je ne comprend pas comment je dois l'utiliser
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
D'abord Pour tester, tu fais un fichier html avec ce code
about:blank
ensuite tu reprends ton code en donnant au navigateur l'url du fichier c:\mysite.html.
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <FRAMESET ROWS="1%, 99%"> <FRAME SRC="about:blank" NAME="haut"> <FRAME SRC="tonUrl.htm" NAME="bas"> </FRAMESET>
Tu navigue dans ta page avec un truc du genre
Déjà on verra Si on navigue dans les onglets,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2IE.Document.parentWindow.execScript "javascript:this.document.bas.selectionner(31);"
Après tu reprends le lien que je t'ai donné et tu copie colle dans Excel le contenu de la page donc les 2 frames (au niveau de l'objet document)
D'abord bonjour,
Ensuite, avant de parler des résultats obtenus (ou non obtenus), quelques petites erreurs résolues :
Il faut changerpar
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set IE = CreateObject("internetexplorer.application")lorsqu'il s'agit d'un réseau Intranet (je ne m'explique pas pourquoi, mais le premier code ne fonctionne pas alors que le deuxième si)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set IE = New InternetExplorerMedium
Ensuite l'object Doc n'est pas declare, il faut ajouterEnsuite pour les résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim Doc As Object
1) la partiesemble être fonctionnelle (ne retourne pas d'erreur et référence la liste souhaitée)
Code : Sélectionner tout - Visualiser dans une fenêtre à part mesLI(i).Children(0).Click
2) Lors de l'affichage des tables avec le Debug.Print (, seules les tables du premier onglet (l'onglet de depart et pas critères) sont affichées, comme si le click n'avait pas fonctionné (alors qu'il semble avoir fonctionné)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For e = 0 To mestables.Length - 1 'on boucle sur toutes les tables Debug.Print mestables(e).innerText ' on peut voir le innertext de la table dans la fentre d'execution texte = texte & mestables(e).outerHTML & "<br>" Next
3) Erreur non résolue, le codeme retourne une erreur du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part If .parentWindow.clipboardData.setData("Text", texte) Thenlorsque la boucle semble avoir atteint la fin, comme si elle dépassait la taille maximaleArgument Invalide
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
Ca ne peut pas fonctionner, comment puis-je récupérer la création de la table dans un fichier qui est simplement du copier-coller du code HTML? Pour avoir accès aux différents éléments, il faudrait que j'ai accès à la totalité du code de construction des tables, ce que je n'ai pas.
EDIT : Testé tout de meme, mais comme je le pensais, avoir une page web qui ne créé rien ne sert à rien (la navigation entre les onglets se fait bien mais je me retrouve sans aucune valeur dans les tables et autres champs remplis à l'exécution du code)
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
Bonjour,
tu n'as pas besoin d'avoir accès à la table!
tu nous dis ce qui marche pas mais pas ce qui marche , ça n'aide pas!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub test() Const OLECMDID_SELECTALL = 17 Const OLECMDEXECOPT_DODEFAULT = 0 Const OLECMDID_COPY = 12 iE.Document.parentWindow.execScript("javascript:selectionner(31)","JavaScript") iE.ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT 'Sélectionne tous iE.ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT 'Copie ActiveCell.PasteSpecial xlPasteAll End Sub
Dernière modification par Invité ; 30/11/2015 à 10h32.
La seule chose qui fonctionne dans ce code, c'est l'affichage de la première page HTML. Le reste n'affiche qu'une page blanche
Et bien sûr que j'ai besoin d'avoir accès à la table, puisque ce qui m'intéresse c'est les données qu'elle contient. Je ne sais pas comment il serait possible de récupérer les données de la table, sans y accéder, cela me parait très étrange.
Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas
Bonjour
on reprends
question 1 :a tu essayé de manipuler les li?
question 2 :si oui est ce que ta table apparait dans la page web?
question 3 : si oui apparait elle dans dans le meme onglet de IE ou autre navigateur ?
si c'est 3 oui c'est simplement la gestions des attentes a revoir et ca veut dire que tu n'a pas de soucvis avec les autorisation d'executions de script dans ton intranet
ce qui veut dire que le principe que je t' avais donné doit fonctionner
navigation ;gestion d'attente;determination du li,click;gestion d'attente(peut etre en dehors des principe readystate )donc fonction wait ou gestion d'attente sur le locationurl;recupération de la table (getelementsbytagnamee("table")(x))
voila reponds a ces questions car comme on a pas ton url ca risque de durer des plombes
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager