Bonsoir à tous,

Je suis encore novice en VBA et je m'en sors difficilement avec tout ce que je lis sur le web. J'espère que vous pourrez m'aider.

Je souhaite récupérer des données sur une page web accessible par login + mot de passe puis par l'outil de recherche du site.

Je sais récupérer les infos si je me suis connecté au préalable. Pour cela j'utilise le code suivant :
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
Sub Importer()
 
    Sheets.Add
    ActiveSheet.Name = "TMP_IMPORT"
 
    With Sheets("TMP_IMPORT").QueryTables.Add( _
         Connection:="URL;http://www.xxx.com/recherche.php?search=VVH31A3120", _
         Destination:=Sheets("TMP_IMPORT").Range("$A$1"))
        .Name = "recherche.php?search=VVH31A3120_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
 
    compteur = 0
 
    For ligne = 1 To 1000
 
        If Left(Sheets("TMP_IMPORT").Cells(ligne, 6), 14) = "Valeur estimée" Then
            compteur = compteur + 1
            Sheets("Fours").Cells(compteur, 1) = Sheets("TMP_IMPORT").Cells(ligne + 1, 6)
 
            If compteur = 1 Then Exit For
        End If
 
    Next
 
    Application.DisplayAlerts = False
    Sheets("TMP_IMPORT").Delete
    Application.DisplayAlerts = True
 
End Sub
Mais si je veux exécuter la macro sans être connecté au préalable, je dois me connecter via une macro.
J'ai tenté ceci (j'ai juste caché le login et le mot de passe) :
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
Sub ConnexionAMonSite()
Const READYSTATE_COMPLETE = 4
Dim IE
Dim elementHtml As Object
Set IE = CreateObject("internetExplorer.Application") 'ouvre internet explorer
IE.Visible = True
With IE
.navigate "http://www.xxx.com/" 'va sur la page du site
Do Until .readyState = READYSTATE_COMPLETE 'on attend jusqu’à ce que la page soit chargée
DoEvents
Loop
End With
Set elementHtml = IE.document.getElementById("compte") 'on sélectionne une case du formulaire
elementHtml.Value = "mon login" 'on donne une valeur à cette case
 
Set elementHtml = IE.document.getElementById("password") 'on sélectionne une case du formulaire
elementHtml.Value = "mon mot de passe" 'on donne une valeur à cette case
 
Set ObjectIE = IE.document.getElementById("submit") 'on sélectionne un bouton
ObjectIE.Click 'on clique sur ce bouton
 
End Sub
J'arrive ici sur une erreur d'exécution '13' Incompatibilité de type
Quel est le problème et comment le corriger ?

Merci d'avance pour votre aide