Bonjour,
Je pilote un programme intranet avec VBA Excel.
Après avoir renseigné 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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
</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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 = "1940"
    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
   <souligne><gras>DoEvents</gras></souligne>
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...
Silky Road m'a déjà aidé sur ce programme ...
Merci.