cs_epaminondas
Messages postés26Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 9 août 2008
-
23 mai 2008 à 07:34
cs_epaminondas
Messages postés26Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 9 août 2008
-
8 juin 2008 à 10:35
Bonjour, Je pilote un logiciel intranet avec VBA Excel avec le code suivant :
Code :
' Formulaire
'Remplie les champs nécessaires...
IE.DOCUMENT.All(
"NumExp"
).Value = CodeEctien
IE.DOCUMENT.All(
"motDePasse"
).Value = Pass
IE.DOCUMENT.All(
"envoyer"
).Click
'clique sur le bouton...
'Remplie les champs nécessaires...
IE.DOCUMENT.All("NumExp").Value = CodeEctien
IE.DOCUMENT.All("motDePasse").Value = Pass
IE.DOCUMENT.All("envoyer").Click 'clique sur le bouton...
Do While IE.ReadyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
Do While IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
cs_epaminondas
Messages postés26Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 9 août 2008 23 mai 2008 à 16:07
Merci pour ta réponse Renfield.
Je suis sûr que c'est ça mais toujours le même message.
Je ne pense pas que ça vienne des références, puisque ça marche jusque là.
Es tu sûr que dans l'instruction With IE Document.All("MISS_ETR"), l'expression entre parenthèses est la bonne ?
Je reproduis, ci-dessous, le texte modifié pour que tu voies, si je n'ai pas fait de bêtises ...
[CODE]
Sub Convention() ' Accès au logiciel Convention
Dim numeroexpert As Long
Dim password As Variant
Dim IE As Object
Dim sLocalFilename As String
Const READYSTATE_INTERACTIVE = 3
Const READYSTATE_COMPLETE = 4
'crée un objet internet Explorer
Set IE = CreateObject("InternetExplorer.Application")
'le masque
IE.Visible = True
'ouvre la page d'enregistrement de identification Ecti
IE.navigate "http://www.intranet-ecti.org/asp/index.asp"
'attends que la page soit ouverte
Do While IE.readyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
' Formulaire
'rempli les champs nécessaires...
IE.DOCUMENT.All("NumExp").Value = CodeEctien
IE.DOCUMENT.All("motDePasse").Value = Pass
IE.DOCUMENT.All("envoyer").Click 'clique sur le bouton...
Do While IE.readyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
With IE.DOCUMENT.All("MISS_ETR")
If .Value = "MISS_ETR " Then
.Click 'clique sur le bouton
End If
End With
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 23 mai 2008 à 16:15
tu as mélangé certaines choses
après un .Navigate, on fait un boucle en attente de READYSTATE_COMPLETE :
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
idem ici :
IE.navigate " [ Lien ]"
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
With IE.DOCUMENT.All("MISS_ETR")
tu ne peux en effet pas jouer avec MISS_ETR de ton document, si tu n'a pas ce document : attend qu'il soit chargé.
le controle IE fonctionne de manière asynchrone.
il rend la main alors que la page n'est pas chargée. a toi d'attendre.
après un click sur un bouton, il faut attendre l'etat INTERACTIVE qui marque que le document réagit. ensuite, on attend e nouveau l'Etat COMPLETE
------------------------------------------
Sub Convention() ' Accès au logiciel Convention
Dim numeroexpert As Long
Dim password As Variant
Dim IE As Object
Dim sLocalFilename As String
Const READYSTATE_INTERACTIVE = 3
Const READYSTATE_COMPLETE = 4
'crée un objet internet Explorer
Set IE = CreateObject("InternetExplorer.Application")
'l'affiche
IE.Visible = True
'ouvre la page d'enregistrement de identification Ecti
IE.navigate " [ Lien ]"
'attends que la page soit ouverte
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
' Formulaire
'rempli les champs nécessaires...
IE.DOCUMENT.All("NumExp").Value = CodeEctien
IE.DOCUMENT.All("motDePasse").Value = Pass
IE.DOCUMENT.All("envoyer").Click 'clique sur le bouton...
Do While IE.readyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
IE.navigate " [ Lien ]"
With IE.DOCUMENT.All("MISS_ETR")
If .Value = "MISS_ETR " Then
.Click 'clique sur le bouton
End If
End With
Do While IE.readyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202172 27 mai 2008 à 15:45
ta boucle :
For Each Deleg In IE.Document.getElementsByName("Deleg")(0).getElementsByTagName("Option")
If InStr(1, Deleg.innerText, "FR82", vbTextCompare) Then
Deleg.Selected = True
Exit For
End If
Next Deleg
cs_epaminondas
Messages postés26Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 9 août 2008 27 mai 2008 à 16:34
ya ka d'mander.
Evidemment ça marche.
En définitive, je cherche et tu trouves. J'ai l'impression d'être un gros nul mais mon programme avance. Alors, tant que tu veux bien m'aider ...
Merci et à +
cs_epaminondas
Messages postés26Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 9 août 2008 3 juin 2008 à 17:37
Bonjour Renfield,
me re voilà.
J'ai pas mal avancé mais je bute sur un cas qui fait un peu déjà vu mais sans "name"
</tr><tr><?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
<td colspan="8" align="center">
</td
Public Sub ExpertResearch() ' Accès au programme Experts
Dim maPageHtml As HTMLDocument
Dim Helem As HTMLElementCollection
Dim TypeDocument As String
Dim Deleg As Object
Dim HTMLDelegElement(100) As HTMLElementCollection
Dim IE As Object
Dim sLocalFilename As String
Const READYSTATE_INTERACTIVE = 3
Const READYSTATE_COMPLETE = 4
'crée un objet internet Explorer
Set IE = CreateObject("InternetExplorer.Application")
'le masque
IE.Visible = True
' Ouvre la page d'enregistrement de identification Ecti
cs_epaminondas
Messages postés26Date d'inscriptionvendredi 8 décembre 2000StatutMembreDernière intervention 9 août 2008 8 juin 2008 à 10:35
Je crois avoir progressé.
En fait, quand je suis sur la page web, et après avoir renseigné le formulaire, il me suffit de faire "entrée" et la page suivante s'affiche. Je crois comprendre qu'il faudrait, dans le programme vba, simuler ce retour charriot.
Comment ?
Je cherche en mettant dans form(0) un code ASCII
Si tu as quelques lumières...
A +