Bonjour,
Je pilote un programme intranet avec VBA Excel.
Après avoir enseigné les différents paramètres. J'arrive à un bouton lancer qui va sélectionner les articles correspondants aux données entrées.
Voici le code source :
</tr><tr>
<td colspan="8" align="center">
<input type="image" src="../../../../img/bt_lancer.gif">
</td>
</tr>
</table>
</form>
<br>
<hr>
</body>
</html>
Et voici une des versions de mon module chargé de traiter le problème :
Option Explicit
Private Declare Function URLDownloadToCacheFile Lib "urlmon" Alias "URLDownloadToCacheFileA" (ByVal lpUnkcaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwBufLength As Long, ByVal dwReserved As Long, ByVal IBindStatusCallback As Long) As Long
Private Function DownloadFile(URL As String) As String
Dim lngRetVal As Long
Dim sLocalFilename As String
'procedure de telechargement de l'image (trouvé sur le net???)
'(pour eviter d'utiliser un contrôle Inet...)
sLocalFilename = Space(300)
lngRetVal = URLDownloadToCacheFile(0, URL, sLocalFilename, Len(sLocalFilename), 0, 0)
If lngRetVal = 0 Then
DownloadFile = Trim(sLocalFilename)
End If
End Function
Function RndStr(nb As Integer) As String
Dim I As Integer
'renvoie une chaine de nb caracteres aléatoires...(de a à z)
RndStr = ""
For I = 1 To nb
RndStr = RndStr + Chr(CInt(Rnd * 25) + 97)
Next I
End Function
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 htmlDoc As Object
Dim IESubmit As HTMLFormElement
Dim IECtrl As HTMLFormElement
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/Experts/ExpertsActifs/selectionGenerale/filtre.asp"
'attends que la page soit ouverte
Do While IE.readyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
' Formulaire
'remplit les champs nécessaires...
IE.DOCUMENT.all("AnNai").Value = "1960"
IE.DOCUMENT.all("M10").Value = "COMPTABLE"
IE.DOCUMENT.all("M11").Value = "GESTION"
IE.DOCUMENT.all("M12").Value = "AUDIT"
IE.DOCUMENT.all("Dep1").Value = "75"
IE.DOCUMENT.all("Dep2").Value = "77"
IE.DOCUMENT.all("Dep3").Value = "78"
IE.DOCUMENT.all("Dep4").Value = "91"
IE.DOCUMENT.all("Dep5").Value = "92"
IE.DOCUMENT.all("Dep6").Value = "93"
IE.DOCUMENT.all("Dep7").Value = "94"
IE.DOCUMENT.all("Dep8").Value = "95"
Do While IE.readyState <> READYSTATE_INTERACTIVE
DoEvents
Loop
'
Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop
Set IESubmit = htmlDoc.forms(0)
IESubmit.submit
End Sub
Je perds la main et quand je fais CTRL + Pause, le curseur est sur le do events souligné.
Si quelqu'un peut me sortir du pétrin...
Merci.
Configuration: Windows XP
Internet Explorer 7.0