Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interaction Excel et navigateur

17 réponses
Avatar
LeBuss
Bonjour à tous,

Est il possible de remplir un champ d'une page web à partir d'une
cellule d'excel ?

Je m'explique.
Je dois vérifier des comptes utilisateurs sur un site web. Pour
m'identifier il faut renseigner l'email et le mot de passe.
Tous les comptes que j'ai à vérifier sont dans un fichier Excel.
Je souhaitais avoir une macro qui me permette de faire un copier de la
cellule active et un coller dans le champ Email du navigateur.
mais la, ce n'est plus de mon niveau.

Merci pour vos idées

Bonne journée à vous

LeBuss

7 réponses

1 2
Avatar
isabelle
voilà,

[code]
Sub NaviguerPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "q" Then 'q est nom de la case pour
entrer le mot ou phrase à rechercher
Helem(i).innerText = "Ma recherche"
Helem(i + 1).Click 'le bouton Recherche Google vient juste après donc
i + 1
End If
Next
End Sub
[/code]

isabelle
------------------------------------------------------------------

Le 2011-04-11 17:41, LeBuss a écrit :
Bonsoir Isabelle,

c'est super, mais souhaite écrire dans le champ de recherche de
goolge, es ce possible ??

Grand merci d'avance

Christophe



Le 10/04/2011 17:38, isabelle a écrit :
salutatous,

par exemple pour lister les objets de la page google,

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-10 06:39, MichD a écrit :
Si tu as une solution avec "GetElementsByTagName" qui répond
à la question du demandeur, je serai intéressé aussi de voir la
solution.

La solution que j'ai proposée est la combinaison d'éléments trouvés
sur le Net.
Comme dit auparavant, elle n'a pas été testée... mais comme les
solutions
proposées pour ce fil étaient rares...

Mes connaissances du modèle objet "InternetExplorer" sont très
limitées!



MichD
--------------------------------------------
"Gloops" a écrit dans le message de groupe de discussion :
inqr9u$mqb$

MichD a écrit, le 08/04/2011 16:27 :
Bonjour,

As-tu essayé quelque chose comme ceci :

Je ne suis pas en mesure de tester cette procédure.
J'espère si cela fonctionne et que tu trouves, tu
viendras nous dire comme tu as fait cela.

'---------------------------------------------------
Sub Copier_Data_Dans_Fichier_Internet()

Dim Wk As Workbook
Dim AdresseURL As String

With CreateObject("InternetExplorer.Application")
.Navigate "http://Adresse du site internet"
Do Until .ReadyState = 4
DoEvents
Loop
DoEvents
With .document
.items("UserName") = "MichD"
.items("PassWord") = "MichD"
.items("UserNameSend").submit
End With
End With

AdresseURL = "http://Chemin/files/NomFichier.xls"
Set Wk = Workbooks.Open(AdresseURL)

'Le classeur que tu viens d'ouvrir = _
ton classeur où est la donnée à copier
Wk.Worksheets("NomFeuilleInternet").Range("A1") = _
Workbooks("Source").Worksheets("NomDeLaFeuille").Range("A25")

'Fermeture du classeur Web
Wk.Close True

End Sub
'---------------------------------------------------


MichD
--------------------------------------------



Bonjour,

C'est bien, ça, dans le principe, mais si la question est posée c'est
que considérer la suite comme évidence est peut-être aller un peu vite
en besogne.

Le code indiqué part du principe que le document comporte une zone de
saisie nommée UserName, une zone de saisie nommée PassWord, et un
bouton
nommé UserNameSend, qui va chercher le nom dans UserName, le mot de
passe dans PassWord, et effectue la connexion avec ces éléments.

J'ai goupillé un truc de ce style, mais je vais dormir avant de
regarder :)

Si le document est aux normes XHTML, ça peut valoir le coup de
s'intéresser à XPATH. Il faut prévoir d'y passer un paquet d'heures,
s'embêter plus qu'en cheminant via les instructions
GetElementsByTagName
(que j'ai d'ailleurs utilisées dans l'exemple que j'ai développé), mais
une fois qu'on est opérationnel, le jour où le format du document
change
on corrige le chemin en moins de deux.

Enfin ... Je dis ça pour quelqu'un susceptible de s'intéresser un
certain nombre de fois à la question. Sinon, certes,
GetElementsByTagName risque bien de faire l'affaire.






Avatar
LeBuss
Le 12/04/2011 01:36, MichD a écrit :

Merci à Gloops,

ceci est plus performant.

'------------------------------
Sub test()
Dim MonLien As String, strArgument As String
strArgument = "Machine" 'Expression recherchée
MonLien = "http://www.google.fr/search?q=" + strArgument
ThisWorkbook.FollowHyperlink MonLien, , True
End Sub
'------------------------------

MichD
--------------------------------------------
"MichD" a écrit dans le message de groupe de discussion : invtrn$kfr$

Bonjour,

Une façon de faire :


'--------------------------------------------
Sub test()
Dim Source As String
Dim MonLien As String

Source = "locomotive" 'Expression recherchée
'-----------------------
MonLien = "http://www.google.com/"

ThisWorkbook.FollowHyperlink MonLien, , True
DoEvents
Application.Wait Now() + TimeValue("00:00:01")
SendKeys Source& "~"
End Sub
'--------------------------------------------


MichD
--------------------------------------------
"LeBuss" a écrit dans le message de groupe de discussion : 4da3758c$0$7926$

Bonsoir Isabelle,

c'est super, mais souhaite écrire dans le champ de recherche de goolge,
es ce possible ??

Grand merci d'avance

Christophe



Le 10/04/2011 17:38, isabelle a écrit :
salutatous,

par exemple pour lister les objets de la page google,

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A"& i + 1) = Helem(i).getAttribute("name")
Range("B"& i + 1) = Helem(i).getAttribute("value")
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-10 06:39, MichD a écrit :
Si tu as une solution avec "GetElementsByTagName" qui répond
à la question du demandeur, je serai intéressé aussi de voir la solution.

La solution que j'ai proposée est la combinaison d'éléments trouvés
sur le Net.
Comme dit auparavant, elle n'a pas été testée... mais comme les solutions
proposées pour ce fil étaient rares...

Mes connaissances du modèle objet "InternetExplorer" sont très limitées!



MichD
--------------------------------------------
"Gloops" a écrit dans le message de groupe de discussion :
inqr9u$mqb$

MichD a écrit, le 08/04/2011 16:27 :
Bonjour,

As-tu essayé quelque chose comme ceci :

Je ne suis pas en mesure de tester cette procédure.
J'espère si cela fonctionne et que tu trouves, tu
viendras nous dire comme tu as fait cela.

'---------------------------------------------------
Sub Copier_Data_Dans_Fichier_Internet()

Dim Wk As Workbook
Dim AdresseURL As String

With CreateObject("InternetExplorer.Application")
.Navigate "http://Adresse du site internet"
Do Until .ReadyState = 4
DoEvents
Loop
DoEvents
With .document
.items("UserName") = "MichD"
.items("PassWord") = "MichD"
.items("UserNameSend").submit
End With
End With

AdresseURL = "http://Chemin/files/NomFichier.xls"
Set Wk = Workbooks.Open(AdresseURL)

'Le classeur que tu viens d'ouvrir = _
ton classeur où est la donnée à copier
Wk.Worksheets("NomFeuilleInternet").Range("A1") = _
Workbooks("Source").Worksheets("NomDeLaFeuille").Range("A25")

'Fermeture du classeur Web
Wk.Close True

End Sub
'---------------------------------------------------


MichD
--------------------------------------------



Bonjour,

C'est bien, ça, dans le principe, mais si la question est posée c'est
que considérer la suite comme évidence est peut-être aller un peu vite
en besogne.

Le code indiqué part du principe que le document comporte une zone de
saisie nommée UserName, une zone de saisie nommée PassWord, et un bouton
nommé UserNameSend, qui va chercher le nom dans UserName, le mot de
passe dans PassWord, et effectue la connexion avec ces éléments.

J'ai goupillé un truc de ce style, mais je vais dormir avant de
regarder :)

Si le document est aux normes XHTML, ça peut valoir le coup de
s'intéresser à XPATH. Il faut prévoir d'y passer un paquet d'heures,
s'embêter plus qu'en cheminant via les instructions GetElementsByTagName
(que j'ai d'ailleurs utilisées dans l'exemple que j'ai développé), mais
une fois qu'on est opérationnel, le jour où le format du document change
on corrige le chemin en moins de deux.

Enfin ... Je dis ça pour quelqu'un susceptible de s'intéresser un
certain nombre de fois à la question. Sinon, certes,
GetElementsByTagName risque bien de faire l'affaire.







Merci Michel,
J'ai mal choisi mon exemple dans le sens ou je veux écrire dans un champ
de login, un login qui est dans une cellule excel.
J'ai donc vraiment besoin des commandes pour écrire dans des champs
d'une page WEB

Merci d'avance
Avatar
isabelle
on peut faire plus court lorsque l'on connait le nom des éléments de la
page,
'nécéssite d'activer les références Microsoft HTML Objects Library et
Microsoft Internet Controls

Sub NaviguerPageWebTEST()
Dim IE As internetExplorer
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
IE.document.getElementsByTagName("input").Item("q").innerText = "Ma
recherche"
IE.document.getElementsByTagName("input").Item("btnG").Click
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-11 19:44, isabelle a écrit :
voilà,

[code]
Sub NaviguerPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "q" Then 'q est nom de la case
pour entrer le mot ou phrase à rechercher
Helem(i).innerText = "Ma recherche"
Helem(i + 1).Click 'le bouton Recherche Google vient juste après
donc i + 1
End If
Next
End Sub
[/code]

isabelle
------------------------------------------------------------------

Le 2011-04-11 17:41, LeBuss a écrit :
Bonsoir Isabelle,

c'est super, mais souhaite écrire dans le champ de recherche de
goolge, es ce possible ??

Grand merci d'avance

Christophe



Le 10/04/2011 17:38, isabelle a écrit :
salutatous,

par exemple pour lister les objets de la page google,

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-10 06:39, MichD a écrit :
Si tu as une solution avec "GetElementsByTagName" qui répond
à la question du demandeur, je serai intéressé aussi de voir la
solution.

La solution que j'ai proposée est la combinaison d'éléments trouvés
sur le Net.
Comme dit auparavant, elle n'a pas été testée... mais comme les
solutions
proposées pour ce fil étaient rares...

Mes connaissances du modèle objet "InternetExplorer" sont très
limitées!



MichD
--------------------------------------------
"Gloops" a écrit dans le message de groupe de discussion :
inqr9u$mqb$

MichD a écrit, le 08/04/2011 16:27 :
Bonjour,

As-tu essayé quelque chose comme ceci :

Je ne suis pas en mesure de tester cette procédure.
J'espère si cela fonctionne et que tu trouves, tu
viendras nous dire comme tu as fait cela.

'---------------------------------------------------
Sub Copier_Data_Dans_Fichier_Internet()

Dim Wk As Workbook
Dim AdresseURL As String

With CreateObject("InternetExplorer.Application")
.Navigate "http://Adresse du site internet"
Do Until .ReadyState = 4
DoEvents
Loop
DoEvents
With .document
.items("UserName") = "MichD"
.items("PassWord") = "MichD"
.items("UserNameSend").submit
End With
End With

AdresseURL = "http://Chemin/files/NomFichier.xls"
Set Wk = Workbooks.Open(AdresseURL)

'Le classeur que tu viens d'ouvrir = _
ton classeur où est la donnée à copier
Wk.Worksheets("NomFeuilleInternet").Range("A1") = _
Workbooks("Source").Worksheets("NomDeLaFeuille").Range("A25")

'Fermeture du classeur Web
Wk.Close True

End Sub
'---------------------------------------------------


MichD
--------------------------------------------



Bonjour,

C'est bien, ça, dans le principe, mais si la question est posée c'est
que considérer la suite comme évidence est peut-être aller un peu vite
en besogne.

Le code indiqué part du principe que le document comporte une zone de
saisie nommée UserName, une zone de saisie nommée PassWord, et un
bouton
nommé UserNameSend, qui va chercher le nom dans UserName, le mot de
passe dans PassWord, et effectue la connexion avec ces éléments.

J'ai goupillé un truc de ce style, mais je vais dormir avant de
regarder :)

Si le document est aux normes XHTML, ça peut valoir le coup de
s'intéresser à XPATH. Il faut prévoir d'y passer un paquet d'heures,
s'embêter plus qu'en cheminant via les instructions
GetElementsByTagName
(que j'ai d'ailleurs utilisées dans l'exemple que j'ai développé),
mais
une fois qu'on est opérationnel, le jour où le format du document
change
on corrige le chemin en moins de deux.

Enfin ... Je dis ça pour quelqu'un susceptible de s'intéresser un
certain nombre de fois à la question. Sinon, certes,
GetElementsByTagName risque bien de faire l'affaire.






Avatar
steph b
bonjour
ton code marche super bien isabelle merci

mais par exemple comment simuler un lick sur la page:
http://paris-a-la-carte-version-pl.paris.fr/carto/mapping

L'onglet Cartes thématiques.


"isabelle" a écrit dans le message de news:
io03o2$6p2$
voilà,

[code]
Sub NaviguerPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "q" Then 'q est nom de la case pour
entrer le mot ou phrase à rechercher
Helem(i).innerText = "Ma recherche"
Helem(i + 1).Click 'le bouton Recherche Google vient juste après donc i
+ 1
End If
Next
End Sub
[/code]

isabelle
------------------------------------------------------------------

Le 2011-04-11 17:41, LeBuss a écrit :
Bonsoir Isabelle,

c'est super, mais souhaite écrire dans le champ de recherche de goolge,
es ce possible ??

Grand merci d'avance

Christophe



Le 10/04/2011 17:38, isabelle a écrit :
salutatous,

par exemple pour lister les objets de la page google,

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-10 06:39, MichD a écrit :
Si tu as une solution avec "GetElementsByTagName" qui répond
à la question du demandeur, je serai intéressé aussi de voir la
solution.

La solution que j'ai proposée est la combinaison d'éléments trouvés
sur le Net.
Comme dit auparavant, elle n'a pas été testée... mais comme les
solutions
proposées pour ce fil étaient rares...

Mes connaissances du modèle objet "InternetExplorer" sont très
limitées!



MichD
--------------------------------------------
"Gloops" a écrit dans le message de groupe de discussion :
inqr9u$mqb$

MichD a écrit, le 08/04/2011 16:27 :
Bonjour,

As-tu essayé quelque chose comme ceci :

Je ne suis pas en mesure de tester cette procédure.
J'espère si cela fonctionne et que tu trouves, tu
viendras nous dire comme tu as fait cela.

'---------------------------------------------------
Sub Copier_Data_Dans_Fichier_Internet()

Dim Wk As Workbook
Dim AdresseURL As String

With CreateObject("InternetExplorer.Application")
.Navigate "http://Adresse du site internet"
Do Until .ReadyState = 4
DoEvents
Loop
DoEvents
With .document
.items("UserName") = "MichD"
.items("PassWord") = "MichD"
.items("UserNameSend").submit
End With
End With

AdresseURL = "http://Chemin/files/NomFichier.xls"
Set Wk = Workbooks.Open(AdresseURL)

'Le classeur que tu viens d'ouvrir = _
ton classeur où est la donnée à copier
Wk.Worksheets("NomFeuilleInternet").Range("A1") = _
Workbooks("Source").Worksheets("NomDeLaFeuille").Range("A25")

'Fermeture du classeur Web
Wk.Close True

End Sub
'---------------------------------------------------


MichD
--------------------------------------------



Bonjour,

C'est bien, ça, dans le principe, mais si la question est posée c'est
que considérer la suite comme évidence est peut-être aller un peu vite
en besogne.

Le code indiqué part du principe que le document comporte une zone de
saisie nommée UserName, une zone de saisie nommée PassWord, et un
bouton
nommé UserNameSend, qui va chercher le nom dans UserName, le mot de
passe dans PassWord, et effectue la connexion avec ces éléments.

J'ai goupillé un truc de ce style, mais je vais dormir avant de
regarder :)

Si le document est aux normes XHTML, ça peut valoir le coup de
s'intéresser à XPATH. Il faut prévoir d'y passer un paquet d'heures,
s'embêter plus qu'en cheminant via les instructions
GetElementsByTagName
(que j'ai d'ailleurs utilisées dans l'exemple que j'ai développé), mais
une fois qu'on est opérationnel, le jour où le format du document
change
on corrige le chemin en moins de deux.

Enfin ... Je dis ça pour quelqu'un susceptible de s'intéresser un
certain nombre de fois à la question. Sinon, certes,
GetElementsByTagName risque bien de faire l'affaire.






Avatar
LeBuss
Le 12/04/2011 11:42, isabelle a écrit :
on peut faire plus court lorsque l'on connait le nom des éléments de la
page,
'nécéssite d'activer les références Microsoft HTML Objects Library et
Microsoft Internet Controls

Sub NaviguerPageWebTEST()
Dim IE As internetExplorer
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
IE.document.getElementsByTagName("input").Item("q").innerText = "Ma
recherche"
IE.document.getElementsByTagName("input").Item("btnG").Click
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-11 19:44, isabelle a écrit :
voilà,

[code]
Sub NaviguerPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "q" Then 'q est nom de la case pour
entrer le mot ou phrase à rechercher
Helem(i).innerText = "Ma recherche"
Helem(i + 1).Click 'le bouton Recherche Google vient juste après donc
i + 1
End If
Next
End Sub
[/code]

isabelle
------------------------------------------------------------------

Le 2011-04-11 17:41, LeBuss a écrit :
Bonsoir Isabelle,

c'est super, mais souhaite écrire dans le champ de recherche de
goolge, es ce possible ??

Grand merci d'avance

Christophe



Le 10/04/2011 17:38, isabelle a écrit :
salutatous,

par exemple pour lister les objets de la page google,

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-10 06:39, MichD a écrit :
Si tu as une solution avec "GetElementsByTagName" qui répond
à la question du demandeur, je serai intéressé aussi de voir la
solution.

La solution que j'ai proposée est la combinaison d'éléments trouvés
sur le Net.
Comme dit auparavant, elle n'a pas été testée... mais comme les
solutions
proposées pour ce fil étaient rares...

Mes connaissances du modèle objet "InternetExplorer" sont très
limitées!



MichD
--------------------------------------------
"Gloops" a écrit dans le message de groupe de discussion :
inqr9u$mqb$

MichD a écrit, le 08/04/2011 16:27 :
Bonjour,

As-tu essayé quelque chose comme ceci :

Je ne suis pas en mesure de tester cette procédure.
J'espère si cela fonctionne et que tu trouves, tu
viendras nous dire comme tu as fait cela.

'---------------------------------------------------
Sub Copier_Data_Dans_Fichier_Internet()

Dim Wk As Workbook
Dim AdresseURL As String

With CreateObject("InternetExplorer.Application")
.Navigate "http://Adresse du site internet"
Do Until .ReadyState = 4
DoEvents
Loop
DoEvents
With .document
.items("UserName") = "MichD"
.items("PassWord") = "MichD"
.items("UserNameSend").submit
End With
End With

AdresseURL = "http://Chemin/files/NomFichier.xls"
Set Wk = Workbooks.Open(AdresseURL)

'Le classeur que tu viens d'ouvrir = _
ton classeur où est la donnée à copier
Wk.Worksheets("NomFeuilleInternet").Range("A1") = _
Workbooks("Source").Worksheets("NomDeLaFeuille").Range("A25")

'Fermeture du classeur Web
Wk.Close True

End Sub
'---------------------------------------------------


MichD
--------------------------------------------



Bonjour,

C'est bien, ça, dans le principe, mais si la question est posée c'est
que considérer la suite comme évidence est peut-être aller un peu vite
en besogne.

Le code indiqué part du principe que le document comporte une zone de
saisie nommée UserName, une zone de saisie nommée PassWord, et un
bouton
nommé UserNameSend, qui va chercher le nom dans UserName, le mot de
passe dans PassWord, et effectue la connexion avec ces éléments.

J'ai goupillé un truc de ce style, mais je vais dormir avant de
regarder :)

Si le document est aux normes XHTML, ça peut valoir le coup de
s'intéresser à XPATH. Il faut prévoir d'y passer un paquet d'heures,
s'embêter plus qu'en cheminant via les instructions
GetElementsByTagName
(que j'ai d'ailleurs utilisées dans l'exemple que j'ai développé),
mais
une fois qu'on est opérationnel, le jour où le format du document
change
on corrige le chemin en moins de deux.

Enfin ... Je dis ça pour quelqu'un susceptible de s'intéresser un
certain nombre de fois à la question. Sinon, certes,
GetElementsByTagName risque bien de faire l'affaire.












MERCI BEAUCOUP Isabelle
C'est top
Merci Merci !!
Avatar
steph b
Bonjour
Comment, une fois la page ouverte on pourrait recuperer une image de cette
page et la mettre dans une cellule excel

voici le code dans inspecter element
<div id="map" style="cursor: move"></div>

merci

"LeBuss" a écrit dans le message de news:
4da442d4$0$18312$
Le 12/04/2011 11:42, isabelle a écrit :
on peut faire plus court lorsque l'on connait le nom des éléments de la
page,
'nécéssite d'activer les références Microsoft HTML Objects Library et
Microsoft Internet Controls

Sub NaviguerPageWebTEST()
Dim IE As internetExplorer
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
IE.document.getElementsByTagName("input").Item("q").innerText = "Ma
recherche"
IE.document.getElementsByTagName("input").Item("btnG").Click
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-11 19:44, isabelle a écrit :
voilà,

[code]
Sub NaviguerPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "q" Then 'q est nom de la case pour
entrer le mot ou phrase à rechercher
Helem(i).innerText = "Ma recherche"
Helem(i + 1).Click 'le bouton Recherche Google vient juste après donc
i + 1
End If
Next
End Sub
[/code]

isabelle
------------------------------------------------------------------

Le 2011-04-11 17:41, LeBuss a écrit :
Bonsoir Isabelle,

c'est super, mais souhaite écrire dans le champ de recherche de
goolge, es ce possible ??

Grand merci d'avance

Christophe



Le 10/04/2011 17:38, isabelle a écrit :
salutatous,

par exemple pour lister les objets de la page google,

Sub ListeDesObjectsPageWeb()
'nécéssite d'activer la référence Microsoft HTML Objects Library
'nécéssite d'activer la référence Microsoft Internet Controls
Dim i As Integer
Dim IE As internetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = True
IE.navigate "http://www.google.ca/"
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

For i = 0 To Helem.Length - 1
Range("A" & i + 1) = Helem(i).getAttribute("name")
Range("B" & i + 1) = Helem(i).getAttribute("value")
Next
End Sub

isabelle
------------------------------------------------------------------

Le 2011-04-10 06:39, MichD a écrit :
Si tu as une solution avec "GetElementsByTagName" qui répond
à la question du demandeur, je serai intéressé aussi de voir la
solution.

La solution que j'ai proposée est la combinaison d'éléments trouvés
sur le Net.
Comme dit auparavant, elle n'a pas été testée... mais comme les
solutions
proposées pour ce fil étaient rares...

Mes connaissances du modèle objet "InternetExplorer" sont très
limitées!



MichD
--------------------------------------------
"Gloops" a écrit dans le message de groupe de discussion :
inqr9u$mqb$

MichD a écrit, le 08/04/2011 16:27 :
Bonjour,

As-tu essayé quelque chose comme ceci :

Je ne suis pas en mesure de tester cette procédure.
J'espère si cela fonctionne et que tu trouves, tu
viendras nous dire comme tu as fait cela.

'---------------------------------------------------
Sub Copier_Data_Dans_Fichier_Internet()

Dim Wk As Workbook
Dim AdresseURL As String

With CreateObject("InternetExplorer.Application")
.Navigate "http://Adresse du site internet"
Do Until .ReadyState = 4
DoEvents
Loop
DoEvents
With .document
.items("UserName") = "MichD"
.items("PassWord") = "MichD"
.items("UserNameSend").submit
End With
End With

AdresseURL = "http://Chemin/files/NomFichier.xls"
Set Wk = Workbooks.Open(AdresseURL)

'Le classeur que tu viens d'ouvrir = _
ton classeur où est la donnée à copier
Wk.Worksheets("NomFeuilleInternet").Range("A1") = _
Workbooks("Source").Worksheets("NomDeLaFeuille").Range("A25")

'Fermeture du classeur Web
Wk.Close True

End Sub
'---------------------------------------------------


MichD
--------------------------------------------



Bonjour,

C'est bien, ça, dans le principe, mais si la question est posée c'est
que considérer la suite comme évidence est peut-être aller un peu
vite
en besogne.

Le code indiqué part du principe que le document comporte une zone de
saisie nommée UserName, une zone de saisie nommée PassWord, et un
bouton
nommé UserNameSend, qui va chercher le nom dans UserName, le mot de
passe dans PassWord, et effectue la connexion avec ces éléments.

J'ai goupillé un truc de ce style, mais je vais dormir avant de
regarder :)

Si le document est aux normes XHTML, ça peut valoir le coup de
s'intéresser à XPATH. Il faut prévoir d'y passer un paquet d'heures,
s'embêter plus qu'en cheminant via les instructions
GetElementsByTagName
(que j'ai d'ailleurs utilisées dans l'exemple que j'ai développé),
mais
une fois qu'on est opérationnel, le jour où le format du document
change
on corrige le chemin en moins de deux.

Enfin ... Je dis ça pour quelqu'un susceptible de s'intéresser un
certain nombre de fois à la question. Sinon, certes,
GetElementsByTagName risque bien de faire l'affaire.












MERCI BEAUCOUP Isabelle
C'est top
Merci Merci !!

Avatar
LeBuss
Le 12/04/2011 00:14, Gloops a écrit :
LeBuss a écrit, le 08/04/2011 09:20 :
Bonjour à tous,

Est il possible de remplir un champ d'une page web à partir d'une
cellule d'excel ?

Je m'explique.
Je dois vérifier des comptes utilisateurs sur un site web. Pour
m'identifier il faut renseigner l'email et le mot de passe.
Tous les comptes que j'ai à vérifier sont dans un fichier Excel.
Je souhaitais avoir une macro qui me permette de faire un copier de la
cellule active et un coller dans le champ Email du navigateur.
mais la, ce n'est plus de mon niveau.

Merci pour vos idées

Bonne journée à vous

LeBuss




Comme promis je viens de jeter un coup d'œil, finalement il n'y a pas
besoin de tout réécrire en cas de changement de structure, du moment que
les contrôles intéressants ne changent pas de nom.

Le programme est écrit en C#, mais GetElementById est un mot-clé de DOM,
auquel on peut aussi faire appel en VB. C'est pour InvokeMember que, je
crois, il va falloir adapter. Submit comme dit MichD me paraît bien
crédible, mais je n'ai pas vérifié non plus, bien potasser la doc
VBScript et DOM.

Bien entendu, avant d'écrire ça, j'ai regardé dans la source de la page
de connexion du webmail, pour voir comment s'appellent les zones de
saisie où on tape son adresse mail et son mot de passe.

webBrowser1.Document.GetElementById("txtUserName").InnerText = strNomBoite;

webBrowser1.Document.GetElementById("txtPassword").InnerText > DecryptString(strMDP);

if (strMDP != null)
{

webBrowser1.Document.GetElementById("btnEnterClick").InvokeMember("Click");
}



A noter que l'instruction GetElementsByTagName retourne un tableau avec
tous les contrôles d'un certain type, comme input. Si c'est le troisième
qu'on vise, on utilisera GetElementsByTagName("INPUT")(2)
en effet les indices commencent à 0. Là où ça se complique c'est que
c'est à considérer de manière hiérarchique.

A présent il reste à faire le point sur ce que tu vas être en mesure de
faire avec tout ça, en fonction de la structure de la page à traiter.




Merci bcp pour toutes ces précisions qui vont m'être bien utiles.
Bonne soirée
1 2