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) :

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
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
 
  Dim IE As Object
  Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
Merci d'avance