Ne sois pas désolé ! C'est moi qui le suis... Tu fais tout le boulot^^
Tiens :
Pièce jointe 198966
Version imprimable
Ne sois pas désolé ! C'est moi qui le suis... Tu fais tout le boulot^^
Tiens :
Pièce jointe 198966
je fait tout le boulot certe....mais pas pour rien j'espère??? j'espère que tu comprends ce que je fais, même si c un peu free style...;)
Ce qui est étonnant, c que je ne vois pas de crédit mutuel, société géné etc....
dans ce que tu viens de me fournir, à contrario dans celui que je t'ai mis, ils y sont????:weird:
Oups, j'avais oublié de développer les 2 div...
Et voilou :)
Pièce jointe 198967
Ah c mieux merci
Peux-tu copier çà et me dire ce qu'il y a dans titre, toujours pareil en y mettant un point d'arrêt, puis un espion sur titre et une copie ecran
sebCode:
1
2
3
4
5
6 Set tit = IEdoc.all For b = 0 To tit.Length - 1 If tit(b).classname = "GGRIAO0BFAC" Then Set titre = tit(b) End If Next b
Bingo ! Cela correspond au premier solde du fichier que je t'ai envoyé en MP.
Pièce jointe 198968
ouhhouhh, 8-)
Et la copie title??? stp
Après je te donne un code complet....
Et voila :
Pièce jointe 198971
bonjour
deja vous auriez du vous appercevoir que la page de login a une protection anti robot mais un peu bidon et facilement contournable avec un wait
apres pour le reste j'arrive apeine alors une explication claire et précise sur le besoins m'apporterait une comprehention lur la globalité du contexteCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub test() Dim url, ie url = "https://wwws.linxo.com/auth.page#Login" Set ie = CreateObject("internetexplorer.application") With ie .Visible = True .navigate url Do: DoEvents: Loop While .readystate <> 4 Or .busy' l'execution des scripts se font par un js externe et donc le retour sur ready state et busy sont caduques Application.Wait (Now + TimeValue("0:00:01")) .document.all("username").innertext = "toto@titi.fr" .document.all("Password").innertext = "motdepasse" End With End Sub
J'ai encore 2 tests si tu veux bien
1er test apres comme d'hab copie décran sur titre
Puis le 2nd en remplacant celui au dessusCode:
1
2
3
4
5
6 Set tit = IEdoc.all For b = 0 To tit.Length - 1 If tit(b).classname = "GGRIAO0BEAC" Then Set titre = tit(b) End If Next b
SebCode:
1
2
3
4
5
6 Set tit = IEdoc.all For b = 0 To tit.Length - 1 If tit(b).classname = "GGRIAO0BCAC" Then Set titre = tit(b) End If Next b
Salut Patrick
ravi de te voir ici et d'apporter ta pierre à l'édifice....;)
Hexa, pour info PATRICK, est le gourou de ce type de demande et mon formateur principal....
Patrick: j'ai ouvert un post ou je galère http://www.developpez.net/forums/d15...ject-htmlfile/
@patricktoulon
Bonjour,
Et merci pour ton intervention :)
Linxo est un agrégateur de comptes. Il permet donc dans une seule interface web d'avoir une vue (uniquement en lecture) sur tous les comptes que l'on possède et ce même si l'on est dans 15 banques différentes...
Mon besoin est de récupérer les soldes des tous les comptes afin de les copier dans des cellules sous Excel. Ce qui permettra en 1 clic d'avoir la situation globale à l'instant T.
@Sebphyto
Alors pour le test 1 :
Pièce jointe 198976
Pièce jointe 198977
Pour le test 2 :
Pièce jointe 198978
Pièce jointe 198979
on va faire plus simple j'ai repris ta capture et en fait tu veut tout les "celui la" pour les soldes
Pièce jointe 198980
normalement si tu fait un getelementsbyclassename sur cette classe en testant si le parent n'a pas la meme classe
tu doit trouver les parent qui contienne les soldes ,banque d'apres ce que je vois
Oui c'est ça que je souhaite.
En revanche, je suis loin de parler le VBA couramment, je débute à peine !
J'ai certes appris quelques manipulations depuis le début de cette discussion mais autant "Sebphyto" doit comprendre ce que tu dis, autant moi je suis un peu larguée :?
Malheureusement...
Hexa,
Bon essai ce code et dit moi ce que tu as dans ta feuil1
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
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 Sub PremierIE() 'Déclaration des variables Dim IE As Object Dim IEdoc As Object Dim DOCelement As Object 'Initialisation des variables Set IE = CreateObject("InternetExplorer.Application") 'Affichage de la fenêtre IE IE.Visible = True 'Chargement de la page web IE.Navigate ("https://wwws.linxo.com/auth.page#Login") ' attente de fin de chargement Do Until IE.ReadyState = 4 DoEvents Loop 'On pointe le membre Document Set IEdoc = IE.document 'Tempo de 2 secondes Application.Wait Now + TimeValue("0:00:01") 'login Set DOCelement = IEdoc.getElementsByName("username").Item DOCelement.Value = "Monlogin" 'Tempo de 2 secondes Application.Wait Now + TimeValue("0:00:01") 'password Set DOCelement = IEdoc.getElementsByName("password").Item DOCelement.Value = "Monmotdepasse" DOCelement.Select 'Tempo de 2 secondes Application.Wait Now + TimeValue("0:00:01") 'connexion Set DOCelement = IEdoc.getelementsbytagname("button")(0) 'Forms(0) DOCelement.Click ' attente de fin de chargement Do Until IE.ReadyState = 4 DoEvents Loop 'Récupération du solde des comptes 'Essai 1 Set doc = IEdoc.getelementsbytagname("table") Set bla = IEdoc.all For a = 0 To bla.Length - 1 If bla(a).classname = "GGRIAO0BBAC" Then Set blabla = bla(a) 'espion sur blabla x = x + 1 ReDim Preserve tablo_compte(0 To x) tablo_compte(0) = "Tous les soldes" tablo_compte(x) = blabla.innertext 'espion sur tablo_compte stp End If Next a Dim tablo_nom() Set tit = IEdoc.all For b = 0 To tit.Length - 1 If tit(b).classname = "GGRIAO0BEAC" Then Set titre = tit(b) y = y + 1 ReDim Preserve tablo_nom(0 To y) tablo_nom(0) = "Tous les comptes" tablo_nom(y) = titre.innertext End If Next b 'et enfin on copie les tableaux dans la feuil1 Sheets("Feuil1").Activate Sheets("Feuil1").Cells(1, 1).Resize(1, UBound(tablo_nom)) = tablo_nom Sheets("Feuil1").Cells(2, 1).Resize(1, UBound(tablo_compte)) = tablo_compte 'On libère la variable IE Set IE = Nothing End Sub
re
t'a tout faux seb ce ne sont pas des tables mais des divs imbriqués d'apres la capture
Humm une erreur :
Ligne :Code:Sheets("Feuil1").Cells(1, 1).Resize(1, UBound(tablo_nom)) = tablo_nom
Citation:
Erreur d'exécution 9 : L'indice n’apparaît pas à la sélection.
Rien ne s'affiche sur la feuille.
prend un fichier vierge met ce code dans un module standard et lance la sub et dis moi si il y a ce que tu cherche dans le msgbox
si ca fonctionne pas remonte un parent de plus le g...containerCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub test() Dim url, ie url = "https://wwws.linxo.com/auth.page#Login" Set ie = CreateObject("internetexplorer.application") With ie .Visible = True .navigate url Do: DoEvents: Loop While .readystate <> 4 Or .busy Application.Wait (Now + TimeValue("0:00:01")) .document.all("username").innertext = "monlogin" 'ADAPTE TON LOGIN .document.all("Password").innertext = "motdepasse" 'ADAPTE TON MOT DE PASSE .document.getelementsbytagname("BUTTON")(0).Click Do: DoEvents: Loop While .readystate <> 4 Or .busy Application.Wait (Now + TimeValue("0:00:01")) tout = .document.getelementsbyclassname("GGRIAO0F0")(0).innertext End With MsgBox tout ' GGRIAO0BAAC' tes elements 'GGRIAO0F0 ' le pere de tous End Sub
@patricktoulon
Lors de l'exécution du code, Erreur 438
Propriété ou méthode non gérée par cet objet
J'espère que vous savez tous les 2 ce que vous faites car moi... Il va me falloir 3 ans pour assimiler ça :P
si tua une erreur sur la ligne " tout=......"
remplace la par celle ci
Code:tout = .document.getelementbyid("gwt-container").innertext
oui encore un souci avec ie 11 qui n'accepte plus la fonction getelementsbyclassnameCitation:
Lors de l'exécution du code, Erreur 438
Propriété ou méthode non gérée par cet objet
essai avec le id gwt-container comme je te l'ai indiqué
Voici le message, qui ne correspond donc pas à ce qu'on cherche mais on a du texte :) :
Pièce jointe 198984