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 :
Mais si je veux exécuter la macro sans être connecté au préalable, je dois me connecter via une macro.
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
J'ai tenté ceci (j'ai juste caché le login et le mot de passe) :
J'arrive ici sur une erreur d'exécution '13' Incompatibilité de type
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
Quel est le problème et comment le corriger ?
Merci d'avance pour votre aide
Partager