Bonjour à tous,
On me demande de récolter des informations sur un site hippique.
Je voulais mécaniser la logique mais je rencontre un problème sur la saisie des données pour se signer. (donc tout au début des opérations).
J'obtiens un message d'erreur 438 "propriété ou méthode non gérée par cet objet" et je ne comprends pas pourquoi. Voici mon code :
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
Type AuthFormDef
' Adresse à atteindre
  URL As String
' Action du formulaire d'identification
  FormAction As String
' Nom du champ qui demande le nom d'utilisateur
  UserField As String
' Nom du champ qui demande le mot de passe
  PasswordField As String
' Nom du champ qui demande le jour de naissance
  JourField As String
' Nom du champ qui demande le mois de naissance
  MoisField As String
' Nom du champ qui demande l'année de naissance
  AnneeField As String
' Valeur du champ Utilisateur
  UserValue As String
' Valeur du champ Mot de passe
  PasswordValue As String
' Valeur du champ jour de naissance
  JourValue As String
' Valeur du champ mois de naissance
  MoisValue As String
' Valeur du champ année de naissance
  AnneeValue As String
End Type
 
' ---
' CONNEXION A INTERNET EXPLORER AVEC IDENTIFIANT / MOT DE PASSE
' ---
Function ConnexionIE(afd As AuthFormDef) As Boolean
  Dim ie As Object
  Dim doc As MSHTML.HTMLDocument
  Dim frm As MSHTML.HTMLFormElement
  Dim blnFormOK As Boolean
  Dim obj As Object
 
  ' Démarrer et afficher Internet Explorer
  On Error GoTo ConnexionIEErr
  Set ie = CreateObject("InternetExplorer.Application")
  ie.Visible = True
 
  ' Naviguer vers la page et attendre qu'elle soit chargée
  ie.navigate afd.URL
  While ie.Busy
    DoEvents
  Wend
 
  ' Récupérer l'objet Document affiché
  Set doc = ie.Document
 
  ' Identifier le formulaire demandé
  blnFormOK = False
  For Each frm In doc.Forms
    If frm.Action = afd.FormAction Then
      blnFormOK = True
 
      ' Trouver et renseigner les champs Identifiant/Mot de passe
      ' du formulaire
      For Each obj In frm.elements
        If obj.Name = afd.UserField Then obj.Value = afd.UserValue
        If obj.Name = afd.PasswordField Then obj.Value = afd.PasswordValue
        If obj.Name = afd.JourField Then obj.Value = afd.JourValue
        If obj.Name = afd.MoisField Then obj.Value = afd.MoisValue
        If obj.Name = afd.AnneeField Then obj.Value = afd.AnneeValue
      Next
 
      ' Forcer l'envoi du formulaire
      frm.submit
      ConnexionIE = True
    End If
  Next
 
  ' Valeur de retour
  ConnexionIE = blnFormOK
  Exit Function
 
ConnexionIEErr:
  MsgBox "Erreur : " & Err.Number & vbCrLf _
    & Err.Description, vbExclamation
  ConnexionIE = False
  Exit Function
End Function
 
' ---
' TEST DU FORMULAIRE D'IDENTIFICATION
' ---
Sub TestConnexionIE()
  Dim afd As AuthFormDef
 
  ' Paramètres de la connexion
  With afd
    .URL = "http://www.zeturf.fr"
    .FormAction = "https://www.zeturf.fr/fr/accueil/"
    .UserField = "login"
    .PasswordField = "password"
    .JourField = "jour"
    .MoisField = "mois"
    .AnneeField = "annee"
    .UserValue = "amateursf"
    .PasswordValue = "Gmarie06"
    .JourValue = "21"
    .MoisValue = "04"
    .AnneeValue = "1948"
  End With
 
  ' Lancer la connexion
  If ConnexionIE(afd) Then
    MsgBox "Connexion établie !", vbInformation
  Else
    MsgBox "Echec de la connexion", vbExclamation
  End If
End Sub
Je lance le sub TestConnexionIE, tout se déroule bien jusqu'à l'instruction :
If obj.Name = afd.UserField Then obj.Value = afd.UserValue qui provoque l'anomalie citée ci-dessus.
Quelqu'un pourrait-il m'aider SVP ?
Merci par avance