Piloter des pages intranet est-il possible?
#1
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 07-03-2008 16h34
Bonjour,

Je suis nouveau et relativement novice dans le VBA. A travers plusieurs recherche, je suis parvenu à valider des pages ASP sur un intranet en passant un identifiant et mot de passe à des zones textes.
Je bloque sur la manipulation d'une zone radio (formulaire htm) et combobox.
Mon impression est que je n'use pas de l'instruction appropriée.
Ci-joint le code partiel.

Sub GeneFich()

Dim IE As Object 'InternetExplorer
Dim HlmIdent, HlmMdp, HlmBase, Hlmbouton, HlmOk, HlmSite, HlmEquip, Hlmddeb, Hlmdfin, Hlmgo As Object '
IHTMLElement
Dim MaPageHtml 
As Object 'HTMLDocument

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate ("http://pageasp/ConnexCa.asp") '
adresse intranet de ma connexion

Do Until IE.readyState 4
DoEvents
Loop

'Liste des paramètres des pages HTML
Set MaPageHtml = IE.document
Set HlmIdent = MaPageHtml.getElementsByName("login").Item 
Set HlmMdp = MaPageHtml.getElementsByName("pwd").Item
Set HlmBase = MaPageHtml.getElementsByName("connexion").Item
Set HlmOk = MaPageHtml.getElementsByName("modifbase").Item
Set Hlmbouton = MaPageHtml.getElementsByName("Submit2").Item
Set HlmSite = MaPageHtml.getElementsByName("idsite").Item
Set HlmEquip = MaPageHtml.getElementsByName("idequipe").Item '
numéro de l'équipe
Set Hlmddeb = MaPageHtml.getElementsByName("ddeb").Item '
date de début
Set Hlmdfin 
MaPageHtml.getElementsByName("dfin").Item 'date de fin
Set Hlmgo = MaPageHtml.getElementsByName("go").Item '
Image fléche de validation données

'Habilitation d'acces
HlmIdent
.Value "L'indentifiant"         'Fonctionne bien
HlmMdp.Value = "le mot de passe had-oc" '
fonctionne bien
HlmBase
.Value "co"  'ne permet pas de selection l'un des trois radios disponible
HlmOk
.Value "ok"  'option caché dans le code html je ne sais pas si cela focntionne.
Hlmbouton.Click '
La validation semble être efficace.

'Connexion sur la page d'une équipe
'je ne parviens pas à selection dans la combobox la valeur du site, ni celle de l'équipe.

'A défaut, j'ai constitué l'URL avec les données Ad-hoc
IE.navigate ("http://pageasp/Req_Qb.asp?idsite=370&idequipe=5009965") 

Do Until IE.readyState = 4
DoEvents
Loop

'
voici le code que j'ai tenté d'user pour commander les combobox
'HlmSite.Value = 8
'
HlmEquip.Value "5009965"
'En principe j'
ai deux zones calendrier repérer dans le code HTML comme texte dont je n'arrive pas à passer les valeurs.
Hlmddeb = "01/03/2008"
Hlmdfin = "31/03/2008"
Hlmgo.Click

End Sub



En conclusion, est-il possible via le VBA d'excel de piloter Internet explorer pour se rendre sur des pages HTML par validation de données dans des formulaires?
Ou faut-il s'orienter sur l'usage d'un autre système comme le webbrowser, et comment trouver des informations sur son utilisation (abordable par un novice du vba).
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#2
Débutant XLPages

Inscription: 12/08/2007

Messages: 12

Système d'exploitation:
PC
Version Excel utilisée:
XP
Posté le : 07-03-2008 17h30
bonsoir


oui c'est possible de piloter des pages html par VBA

Passer par un webBrowser ne changera rien car tu devras ensuite manipuler le contenu de la même manière
un exemple pour piloter un bouton Radio

Sub piloterRadioBouton()
    
'nécessite d'activer la référence Microsoft HTML Objects Library
    
'nécessite d'activer la référence Microsoft Internet Controls
    Dim IE 
As internetExplorer
    Dim maPageHtml 
As HTMLDocument
    Dim Helem 
As HTMLElementCollection
    
    Set IE 
CreateObject("internetExplorer.Application")
    
IE.Visible True
    IE
.navigate "http:laPage.html"
        
Do Until IE.readyState READYSTATE_COMPLETE
        DoEvents
        Loop 
'attend la fin du chargement
    
    Set maPageHtml = IE.document
    
    ' 
getElementsByName("test"est le nom du bouton Radio
    
'Item(1) correspond à la 2eme option dans la liste des boutons
    Set Helem = maPageHtml.getElementsByName("test").Item(1)
    Helem.setAttribute "checked", "true"
End Sub




Un exemple pour les liste déroulantes (combobox)

Set Hsel maPageHtml.getElementsByTagName("select")

'0 est le 1er element de la liste 
'
1 est le 2eme element de la liste 
'...etc...
'
0 premier combobox dans la page
'4 index de l'élément dans la liste déroulante
Hsel
(0).selectedIndex 4



bon week end
michel
Edité par MichelXld le 07/03/2008 18:49:03
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#3
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 10-03-2008 11h30
Bonjour Michel,

Et merci,

J'ai testé les exemples sur le site Site de test

afin de saisir, les données suivantes :

Your Name : JackyB
Your City: Amiens
Selected your Job : Programmer 'clin d'oeil je ne le suis pas!


Sub PilotageHTML()

 
Dim IE As InternetExplorer
 Dim HlmIdent
HlmMdpHlmBaseHlmboutonHlmOkHlmSiteHlmEquipHlmddebHlmdfinHlmgo As IHTMLElementCollection
 Dim MaPageHtml 
As HTMLDocument
 
 Set IE 
CreateObject("InternetExplorer.Application")
 
IE.Visible True

 IE
.navigate ("http://staff.washington.edu/larryg/Classes/R521/zz-test-form.html")
 
'attente de l'affichage de la page HTML
 
Do Until IE.readyState 4
 DoEvents
 Loop
 
 
'Liste des paramètres des pages HTML
 Set MaPageHtml = IE.document
 Set HlmIdent = MaPageHtml.getElementsByName("myName").Item
 Set HlmMdp = MaPageHtml.getElementsByName("City").Item

 


 HlmIdent.Value = "JackyB"
 HlmMdp.Value = "Amiens"
 
 Set HlmMdp = MaPageHtml.getElementsByName("experience")
  HlmMdp.Item(2).setAttribute "checked", "true"

'
Selection de la liste déroulante 
 Set HlmSite 
MaPageHtml.getElementsByTagName("select")
 
HlmSite(0).selectedIndex 4
 

End Sub


Maintenant dans la semaine je vais tester cela sur mes pages "intranet"

En tout cas merci, l'explication était excellent!
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 10-03-2008 19h35
Bonjour JackyAmiens, MichelXLD, le Forum,

Bienvenue à toi JackyAmiens.

Un petit passage dans ce fil pour remercier MichelXLD pour ses exemples toujours aussi top !

Merci à toi aussi JackyAmiens de bien vouloir revenir nous dire si tes tests sur Intranet se sont déroulés comme prévu et pour clore ce fil le cas échéant.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#5
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 11-03-2008 09h28
Bonjour,

J'ai testé sur l'intranet les connaissances nouvelles acquisses.
Cela fonctionne sauf sur la première liste déroulant qui me refuse j'ai contourné le probléme en indiquant le choix dans l'URL d'accès à la page. La seconde liste déroulante accepte parfaitement la commande.
Un autre problème est apparue
L'éxécution pas à pas permet l'enchainement des tâches sans soucis, par contre l'éxecution automatique échoue trois fois sur quatre. Le problème semble venir du rafraichissement des pages malgrè l'instruction d'attente.

Je clôture ici ce post en remerciant de nouveau Michel pour l'efficacité de son aide et j'ouvrirais un autre post pour donner la suite de ma recherhce sur mes pages intranet.
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#6
Aspirant XLPages

Inscription: 07/03/2008
De Amiens

Messages: 33

Système d'exploitation:
PC
Version Excel utilisée:
2002,2003,2010
Posté le : 12-03-2008 11h41
Mon problème était le suivant
Accéder à une page Html d'un intranet pour récupérer un fichier csv au format Txt via excel.

1-Identification sur la page d'entrée
2-passer à la page d'interrogation (formulaire) qui génére un tableau avec lien sur un fichier téléchargeable.
3-sauvegarder le fichier téléchargeable sur un disque local.
l'opération 2 et 3 devant être (pour l'instant) faite 4 fois.

Grace à MichelXld, j'ai compris comment piloter html pour saisir des données dans des zones de texte, radio ou combobox (liste déroulante).

l'instruction IE.readyState permet de savoir si la page est chargé en cache sur le micro.

J'ai dû ajouter une temporisation pour pouvoir aller lire le code HTML générer (intranet + page ASP) qui termine de se charge dans le navigateur après readyState=4.

Après validation des éléments du formulaire, la page générée contient en code HTML l'adresse du fichier à télécharge.

répérage du code grace à MaPageHtml.getElementsByTagName("a").Item(1).outerHTML
le 1 correspond au nombre URL présent dans le code HTML.


Mon objectif est atteind à 100%, merci à myDearFriend et à vous pour l'aide obtenu.

Ci-dessous le code complet de mon projet ( à ma sauce of course)



Public IE As InternetExplorer
Public HlmIdentHlmMdpHlmBaseHlmBoutonHlmddebHlmdfinHlmgo As HTMLElementCollection
Public MaPageHtml As HTMLDocument
Public DateDebutDateFin As String

Sub Calabrio
()
 
'Auteur Jacky Bruiant
 '
Programme principale

 
 Set IE 
CreateObject("InternetExplorer.Application")
 
IE.Visible True
 IE
.navigate ("http://monacces/page1.asp")
 
 
'Attendre l'affichage de l'info htlm terminé dans IE 
 Do Until IE.readyState = 4 '
 
DoEvents
 Loop
 
 
'Liste des paramètres des pages HTML
 Set MaPageHtml = IE.document
 Set HlmIdent = MaPageHtml.getElementsByName("login").Item
 Set HlmMdp = MaPageHtml.getElementsByName("pwd").Item
 Set HlmBase = MaPageHtml.getElementsByName("connexion").Item(0)
 Set HlmBouton = MaPageHtml.getElementsByName("Submit2").Item
 
 '
Lecture et mise en forme de la période d'extraction
 DateDebut = DateSerial(Year(Range("ddebut").Value), Month(Range("ddebut").Value), 1)
 datedfin = DateSerial(Year(Range("ddebut").Value), Month(Range("ddebut").Value) + 1, 1) - 1

 DateDebut = CStr(DateDebut)
 DateFin = CStr(datedfin)
 
'
Habilitation d'access
HlmIdent.Value = "Identifiant"
HlmMdp.Value = "MdP"
HlmBase.setAttribute "checked", "true"
HlmBouton.Click
Call PauseWait(4)

'
Rapatriement des données Ja
Exfunct 
goHTML(7"Cmiens")
Exfunct goHTML(8"CAmiens")
Exfunct goHTML(11"CLille")
Exfunct goHTML(19"CTroyes")

Call PauseWait(2)
IE.Quit
gbox 
MsgBox("Rapatriement achevé"vbInformation"Source Calabrio")
End Sub

'********************************************************************************
Function sauvcalabrio(urlnum, lienurl)
'
' Bruiant J.
'
realise par l'enregistreur de macro

Application.DisplayAlerts = False '
empêche l'apparition des boites de dialogue de confirmation
    Workbooks.OpenText Filename:= _
        lienurl, _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers _
        :=True
    
'
Sauvegarder les données au format TXT avec un séparateur 
ActiveWorkbook.SaveAs Filename:="F:Projetdonnees" urlnum ".txt"_
        FileFormat
:=xlCSVCreateBackup:=False
        ReadOnlyRecommended
:=FalseCreateBackup:=False
        
    ActiveWorkbook
.Close
Application
.DisplayAlerts True  'réactive les message d'alertes
End 
Function

'**********************************************************************************
Sub PauseWait(tps)
'
' Attendre x secondes (voir l'
aide en ligne d'Excel)
'
inspiration du net

Lheure 
Hour(Now())
LesMinutes Minute(Now())
LesSecondes Second(Now()) + tps  'tps le temps de pause
waitTime = TimeSerial(LHeure, LesMinutes, LesSecondes)
Application.Wait waitTime

End Sub

'
**********************************************************************************
Public Function 
goHTML(positionNomFichier)
 
'fonction de génération de la page html contenant le code du fichier de téléchargement
 
 Set MaPageHtml = IE.document
 
IE.navigate ("http://monacces/page2.asp?idsite=370")  '
page de saisie des informations

 
'Attendre l'affichage l'info htlm terminé
 Do Until IE.readyState = 4
 DoEvents
 Loop
 
Call PauseWait(2)
'
Selection de l'équipe ou 0 est le premier élément de la liste
Set HlmSelSite = MaPageHtml.getElementsByTagName("select")
HlmSelSite(1).selectedIndex = position
 

Set Hlmgo = MaPageHtml.getElementsByName("go").Item  '
Image fléche de validation données
Set Hlmddeb 
MaPageHtml.getElementsByName("ddeb").Item  'date de début
Set Hlmdfin = MaPageHtml.getElementsByName("dfin").Item '
date de fin

 
'Attendre l'affichage de l'info htlm terminé dans IE
 Do Until IE.readyState = 4
 DoEvents
 Loop

'
Saisie de la période d'extration des JA
Hlmddeb.Value = DateDebut
Hlmdfin.Value = DateFin

Set HlmImgok = MaPageHtml.getElementsByName("go").Item
HlmImgok.Click

'
Attendre l'affichage complet de la page demandée
 Do Until IE.readyState = 4
 DoEvents
 Loop
 
 Call PauseWait(15)
 
'
Repérage le l'URL du fichier dans le code html 

letxt = MaPageHtml.getElementsByTagName("a").Item(1).outerHTML

'
suppression de la chaine devant le numéro du fichier
letxt 
Replace(letxt"<A class=lienorange_10 href=""../upload/temp/extraction""")  

'suppression de la chaine après le numéro du fichier
letxt = Replace(letxt, ".txt"" target=_blank>Télécharger le fichier TXT</A>", "") 

lelien = " http://monacces/upload/temp/extraction" & letxt & ".txt"  '
constitution de l'URL de téléchargement

exfonct = sauvcalabrio(NomFichier, lelien)  '
recupération du fichier
Call PauseWait
(2)
End Function
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#7
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 12-03-2008 18h43
Bonsoir JackyAmiens, MichelXLD, le Forum,

A mon tour de remercier Michel pour ses réponses toujours aussi précises et efficaces et toi aussi JackyAmiens pour le retour d'information. Je vois que tu as tout à fait compris le sens du mot "partage" et je t'en suis reconnaissant .

Merci à vous

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Piloter des pages intranet est-il possible?
#8
Débutant XLPages

Inscription: 29/05/2012

Messages: 1

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 29-05-2012 21h54
Bonjour,
Merci pour ces superbes macro VB elles m'ont été bien utiles.
Par contre pour extraire des données sur internet j'avais beaucoup de sites sans bouton mais avec des images ou du flash. pour cliquer sur des images ou du flash j'ai complété mes macros avec le freeware WinParrot sur http://www.winparrot.com c'est encore plus simple et fiable maintenant.



Karl
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes