Importation depuis le Web

cpetronille

XLDnaute Nouveau
Bonjour à tous,

je travaille sous Excel 2003 et je souhaite importer depuis le web des données protégées par mot de passe.

Mon projet de d'importer les données d'un porte feuille virtuel depuis le site boursorama. Ce porte feuille virtuel est bien entendu protégé par identifiant et mot de passe. J'ai essayé les macros, les importations classiques depuis le web, mais à chaque fois, ca plante à cause du password. :(

Existe t'il une procédure particulière ou est-ce tout simplement impossible? Sachant que l'impossible n'existe pas en informatique.

Merci d'avance et bonne journée.
Christophe
 
G

Guest

Guest
Re : Importation depuis le Web

Bonjour Petronille et bienvenue pour ce premier post.

Je viens de tester la macro suivante pour se connecter, n'ayant pas de compte 'Boursorama' je n'ai pas pu aller plus loin, mais la page de connexion se charge bien , les champs sont bien renseignés et le formulaire valideret envoyé au serveur.

Une fois la connexion établie, tu pourras lancer ta requête comme tu le faisais avant.

Copie cette macro dans un module et remplace les mots en rouge par tes valeurs.

Code:
Sub ConnexionBoursorama()
    Const READYSTATE_COMPLETE = 4
    Dim IE
    Dim elementHtml As Object
 
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = True
    With IE
        .Navigate "[URL]https://www.boursorama.com/connexion.phtml[/URL]?"
        Do Until .readyState = 4                      '
            DoEvents
        Loop                                          'attend la fin du chargement
    End With
    Dim bOk As Boolean
    Set elementHtml = IE.document.getElementbyId("login")
    If Not elementHtml Is Nothing Then
        bOk = True
        elementHtml.Value = "[COLOR=red]monLogin[/COLOR]"
        Set elementHtml = IE.document.getElementbyId("password")
        If Not elementHtml Is Nothing Then
            bOk = True
            elementHtml.Value = "[COLOR=red]motdepasse[/COLOR]"
            Set elementHtml = IE.document.getElementbyId("identification")
            If Not elementHtml Is Nothing Then
                bOk = True
                elementHtml.submit
            Else
                bOk = False
            End If
        Else
            bOk = False
        End If
    Else
        bOk = False
    End If
    DoEvents
    Set IE = Nothing
   if bOk then msgBox "connexion réussie!" else msgBox "connexion échouée!"
End Sub

C'est malheureusement la seule chose que je puisse faire pour toi.

bonne chance et à bientôt
 

cibleo

XLDnaute Impliqué
Re : Importation depuis le Web

Bonjour le forum,

Je me suis documenté et donc repris l'excellent travail d'Hasco.
J'ai compris ceci :

La macro ouvre la navigateur InternetExplorer puis me dirige vers la page Web concernée (Voir illustration en bas) où figurent les 3 éléments (getElementById).

2 se remplissent automatiquement et le bouton "Se connecter" est validé et j'arrive sur la page où figurent mes "Stations services préférées". (je n'ai pas illustré)

Le lien qui dirige vers l'accueil du site :
Prix des carburants en France, site gouvernemental

Code:
Sub Connexion_[B]prix_carburants_gouv_fr[/B]()
    Const READYSTATE_COMPLETE = 4
    Dim IE
    Dim elementHtml As Object
 
    Set IE = CreateObject("internetExplorer.Application")
    IE.Visible = True
    With IE
        .navigate "http://www.prix-carburants.gouv.fr/index.php"
        Do Until .readyState = 4                      '
            DoEvents
        Loop                                          'attend la fin du chargement
    End With
    Dim bOk As Boolean
    Set elementHtml = IE.Document.[COLOR=darkred]getElementById[/COLOR]("[COLOR=red]internaute_mail[/COLOR]")
    [B]If[/B] Not elementHtml Is Nothing Then
        bOk = True
        elementHtml.Value = "zozo[EMAIL="zozo@wanadoo.fr"]@wanadoo.fr[/EMAIL]"
        Set elementHtml = IE.Document.[COLOR=darkred]getElementById[/COLOR]("[COLOR=red]internaute_password[/COLOR]")
        If Not elementHtml Is Nothing Then
            bOk = True
            elementHtml.Value = "p5he54mz"
            Set elementHtml = IE.Document.[COLOR=darkred]getElementById[/COLOR]("[COLOR=red]Se connecter[/COLOR]")
            If Not elementHtml Is Nothing Then
                bOk = True
                elementHtml.submit
            Else
                bOk = False
            End If
        Else
            bOk = False
        End If
    Else
        bOk = False
    [B]End If[/B]
    DoEvents
    Set IE = Nothing
   If bOk Then MsgBox "connexion réussie!" Else MsgBox "[COLOR=blue]connexion échouée!"[/COLOR]
End Sub

GouvFr.jpg

J'obtiens donc le résultat souhaité à savoir afficher la page web voulue.

Sauf qu'à la fin, la Msgbox m'affiche "connexion échouée" alors que tout s'est normalement déroulé :cool:

Code:
 If bOk Then MsgBox "connexion réussie!" Else MsgBox "connexion échouée!"

Comme j'ai un peu de mal avec les imbrications dans les strucures If Then Else, j'aurais aimé savoir s'il n'y avait pas une erreur au niveau de cette structure, ou si l'erreur se situait dans le "If bOk Then MsgBox ..." tout simplement.

J'espère ne pas avoir posé une question stupide :rolleyes:

Cibleo
 

cibleo

XLDnaute Impliqué
Re : Importation depuis le Web

Re à tous,

J'efface le post #4#, j'ai dit une anerie, je reviens donc sur la question du post #3#
où la Msgbox m'affiche "connexion échouée" alors que tout se déroule normalement.

Cibleo
 
Dernière édition:

Eric 45

XLDnaute Occasionnel
Re : Importation depuis le Web

Bonsoir à tous
Bonsoir cibleo

J'ai essayé le code que tu as donné. Il fonctionne très bien, mais il ne fait qu'ouvrir la page d'accueil, avec
Code:
.navigate "http://www.prix-carburants.gouv.fr/index.php"
et donc ne lit pas les lignes :
Code:
    If Not elementHtml Is Nothing Then
        bOk = True
        elementHtml.Value = "zozo@wanadoo.fr"
        Set elementHtml = IE.document.getElementById("internaute_password")
        If Not elementHtml Is Nothing Then
            bOk = True
            elementHtml.Value = "p5he54mz"
            Set elementHtml = IE.document.getElementById("Se connecter")
            If Not elementHtml Is Nothing Then
                bOk = True
                elementHtml.submit
            Else
                bOk = False
            End If
        Else
            bOk = False
        End If
et on se retrouve avec un bOk à False et donc MsgBox "connexion échouée!"

Si tu ne veux que la page d'accueil, supprime :
Code:
    Dim bOk As Boolean
    Set elementHtml = IE.document.getElementById("internaute_mail")
    If Not elementHtml Is Nothing Then
        bOk = True
        elementHtml.Value = "zozo@wanadoo.fr"
        Set elementHtml = IE.document.getElementById("internaute_password")
        If Not elementHtml Is Nothing Then
            bOk = True
            elementHtml.Value = "p5he54mz"
            Set elementHtml = IE.document.getElementById("Se connecter")
            If Not elementHtml Is Nothing Then
                bOk = True
                elementHtml.submit
            Else
                bOk = False
            End If
        Else
            bOk = False
        End If
    Else
        bOk = False
    End If
    DoEvents
    Set IE = Nothing
   If bOk Then MsgBox "connexion réussie!" Else MsgBox "connexion échouée!"
qui ne sert à rien

Si tu veux aller sur la page de ton compte, essaie ceci :
Code:
Sub Connexion_prix_carburants_gouv_fr()

Dim i As Integer
Dim IE As InternetExplorer
Dim maPageHtml As HTMLDocument
Dim Helem As IHTMLElementCollection

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

IE.navigate "http://www.prix-carburants.gouv.fr/index.php?module=internaute" 
Do Until IE.readyState = READYSTATE_COMPLETE
DoEvents
Loop 'attend la fin du chargement

Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")

Helem(0).innerText = "login"
Helem(1).innerText = "MDP"
Helem(2).Click
End Sub
Je n'ai pas pu tester, n'ayant pas de compte

Eric
 
Dernière édition:

cibleo

XLDnaute Impliqué
Re : Importation depuis le Web

Re Eric,

Là, j'ai du mal :(

Avec ton code, j'arrive directement à la page (illustrée en bas du post) sans passer par le renseignement des 2 zones et le bouton "Se connecter" (illustration du post #3#)

En plus, j'ai mis en veille les instructions après le Loop parce que j'avais des erreurs.

Résultat : j'obtiens la page souhaitée sans m'identifier :confused:

Je pense que cela va poser problème, puisqu' après je vais effectuer une requête pour importer la table illustrée ci-dessous.

Code:
Sub Connexion_prix_carburants_gouv_fr1()
Dim i As Integer
'Dim IE As InternetExplorer
Dim IE As Object
'Dim maPageHtml As HTMLDocument
Dim maPageHtml As Object
'Dim Helem As Object
Dim Helem As IHTMLElementCollection
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "[URL="http://www.prix-carburants.gouv.fr/index.php?module=internaute"]Prix des carburants en France, site gouvernemental[/URL]" '<>
Do Until IE.readyState [COLOR=red]= 4[/COLOR] 'READYSTATE_COMPLETE
DoEvents
Loop 'attend la fin du chargement
'Set maPageHtml = IE.Document
'Set Helem = maPageHtml.getElementsByTagName("input")
'Helem(0).innerText = "login"
'Helem(1).innerText = "MDP"
'Helem(2).Click
End Sub

GouvGouv.jpg

Je revoies tout çà quand j'aurai les idées plus claires.

A+ Cibleo
 

cibleo

XLDnaute Impliqué
Re : Importation depuis le Web

Bonjour à tous,

Je reprends mon code initial :

Après un coup de Débogage > Pas à pas détaillé > F8, je m'aperçois que l'affection du 3ème élément ne doit pas être la bonne puisque j'arrive sur bOk = False.

Normalement, je devrais arriver sur bOk = true ---> elementHtml.submit

C'est pourquoi, j'arrive sur la MsgBox "connexion échouée!"


Code:
[COLOR=navy]Set elementHtml = IE.Document.getElementById("[COLOR=red]Se connecter[/COLOR]")[/COLOR]
            If Not elementHtml Is Nothing Then
                [COLOR=darkgreen]bOk = True[/COLOR]
                [COLOR=darkgreen]elementHtml.submit[/COLOR]
            Else
                [COLOR=red]bOk = False[/COLOR]
            End If

Je ne vois pas comment définir l'affection du 3ème élément à partir du code source de la page Web concernée : .getElementById("Se connecter")

Si l'un d'entre vous pouvait m'aiguiller, je découvre le langage HTML depuis que j'ai réouvert ce post.

Merci de votre aide.

Cibleo

Ps : je reviendrai sur la solution d'Eric plus tard, je n'ai pas eu le temps de l'analyser.
 
Dernière édition:

cibleo

XLDnaute Impliqué
Re : Importation depuis le Web

Re à tous,

En faisant une recherche sur le forum avec le mot "submit", je suis tombé sur un fil de PMO2 et ai trouvé :)

J'ai remplacé ceci :

Code:
Set elementHtml = IE.Document.getElementById("Se connecter")

Par
Code:
Set elementHtml = IE.Document.forms(0)

et ça marche :)

Merci à Eric pour le coup de main

Cibleo
 

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote