Tout d'abord bonjour à tous et merci pour le tuto très instructif de Qwazerty (auquel il faut se référer pour comprendre mon sujet) qui m'a décidé à ré-écrire des macros en VBA pour automatiser certains accès à une BDD sur un site professionnel sécurisé.
Je précise que j'avais déjà écrit de telles macros quelques années auparavant et que tout marchait bien. Mais depuis, mon PC et ses logiciels ont changé et là rien ne va plus...
Je suis sous W7 Édition familiale Premium SP1 64 bits, avec Office pro + 2010 (v.14.0.7147.5001 32 bits) et donc VBA (v.7.0.1628), avec IE11 (v.11.0.9600.17691 màj 11.0.17 32 bits semble-t-il) ; je précise également que Java 32 bits et 64 bits sont à jour également.
Évidemment, les références HTML Object Library et Internet Controls sont activées et pas qu'elles.
Mon problème dès le code de base du tuto : j'ai l'erreur "objet non défini" sur la ligne Set IEDoc = IE.document alors qu'il est préalablement bien défini par "Dim IEDoc As HTMLDocument" donc, avant le WaitDoc...
J'ai suivi pas à pas le tuto et les ajouts des commentaires.
Voici le code avec d'abord les déclarations (je ne reproduis évidemment pas le contenu des constantes) :
J'ai ré-essayé en faisant une autre déclaration de IE (cf. un des commentaires du tuto) sans plus de succès :
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 Option Explicit Public Const CNX_URL As String = "http:xxxx" Public Const CNX_LOG As String = "xxxx" Public Const CNX_MDP As String = "xxxx" Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Essai1_VBA_IE() Dim IE As New InternetExplorer Dim IEDoc As HTMLDocument 'Chargement d'une page Web Google (pour info la constante est déclarée IE.navigate CNX_URL IE.Visible = True WaitIE IE Set IEDoc = IE.Document WaitDoc IEDoc IEDoc.getElementById("le_log").Value = CNX_LOG IEDoc.getElementById("le_pass").Value = CNX_MDP IEDoc.getElementById("btnConnexion").Click WaitIE IE ' suite du code... 'On libère les variables Set IE = Nothing Set IEDoc = Nothing End Sub Sub WaitIE(IE As Internet.Explorer) Do While IE.readyState <> READYSTATE_COMPLETE DoEvents Sleep 1000 Loop End Sub Sub WaitDoc(IEDoc As HTMLDocument) Do While Not IEDoc.readyState = "complete" DoEvents Sleep 1000 Loop End Sub
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim IE As Object Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
Partager