IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Code pour se loguer sur un site web


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Par défaut Code pour se loguer sur un site web
    Bonjour,

    Je rencontre un problème pour me loguer sur un site web depuis VBA.

    Mon code s'exécute correctement en mode 'pas à pas', mais à chaque fois que j'essaie de l'exécuter intégralement :

    - J'ai un message d'erreur 'Erreur d'exécution 91 : Variable objet ou variable de bloc With non définie'.
    - L'exécution s'arrête en cours de route.

    Voyez-vous ce qui pose problème svp ? 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
    Sub Exemple()
     
        Dim IE As New InternetExplorer
        Dim IEdoc As HTMLDocument
        Dim IEdoc2 As HTMLDocument
        Dim FormExCherche As HTMLFormElement
        Dim InputExZoneTexte As HTMLInputElement
        Dim InputExZoneTexte2 As HTMLInputElement
        Dim InputExBouton As HTMLInputElement
     
        'Connexion à une première page web
        IE.navigate "www.mon-site"
        IE.Visible = True
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        'Entrée de l'identifiant puis clic sur un bouton pour ouvrir une seconde page web
        Set IEdoc = IE.document
        Set InputExZoneTexte = IEdoc.all("Nom de la zone de texte login")
        InputExZoneTexte.Value = "Mon identifiant"
        Set InputExBouton = IEdoc.all("Nom du bouton")
        InputExBouton.Click
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        'Jusque là tout va bien. Le code s'exécute correctement, même en n'étant pas en mode 'pas à pas'. C'est ensuite qu'il ne s'exécute plus si je ne suis pas en 'pas à pas'.
     
        'Entrée du mot de passe sur une seconde page web
        Set IEdoc2 = IE.document
        Set InputExZoneTexte2 = IEdoc2.all("Nom de la zone de texte password")
        InputExZoneTexte2.Value = "Mon mot de passe"
        Set FormExCherche = IEdoc2.forms("Nom de la form")
        FormExCherche.submit
        Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
        Loop
     
        Set IE = Nothing
        Set IEdoc = Nothing
        Set IEdoc2 = Nothing
     
    End Sub
    Merci pour vos réponses.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    le site te demande 2 fois tes logins !!!!??????????
    je suis perplexe

    mis a part ca peut gerer une gestion d'attente de changement de locationURL si tu est redirigé

    sans le lien du site a ce niveau on pourra rien faire a part faire un truc bien pourri avec des wait partout (2 plombes pour se loguer )
    tu peux pas le donner le lien si c'est pas un intranet bien sur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Par défaut
    Bonjour,

    Le champ login est sur une première page, après avoir entré le login il faut cliquer sur un bouton pour lancer une seconde page qui contient le champ mot de passe.

    Voici le code avec le lien du site :

    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
    Sub Exemple()
     
     Dim IE As New InternetExplorer
     Dim IEdoc As HTMLDocument
     Dim IEdoc2 As HTMLDocument
     Dim FormExCherche As HTMLFormElement
     Dim InputExZoneTexte As HTMLInputElement
     Dim InputExZoneTexte2 As HTMLInputElement
     Dim InputExBouton As HTMLInputElement
     
    'Connexion à une première page web
     IE.navigate "http://www.lexis360entreprises.fr/MigrationCheck.aspx?returnUrlFrmMg=/Home.aspx?RASReturn=true&pfl=true&AuthReturn=true"
     IE.Visible = True
     Do Until IE.readyState = READYSTATE_COMPLETE
     DoEvents
     Loop
     
    'Entrée de l'identifiant puis clic sur un bouton pour ouvrir une seconde page web
     Set IEdoc = IE.document
     Set InputExZoneTexte = IEdoc.all("ctl00$ctl00$cphBody$cphBody$txtUserId")
     InputExZoneTexte.Value = "Mon identifiant"
     Set InputExBouton = IEdoc.all("ctl00$ctl00$cphBody$cphBody$btnMigrationCheck")
     InputExBouton.Click
     Do Until IE.readyState = READYSTATE_COMPLETE
     DoEvents
     Loop
     
    'Jusque là tout va bien. Le code s'exécute correctement, même en n'étant pas en mode 'pas à pas'. C'est ensuite qu'il ne s'exécute plus si je ne suis pas en 'pas à pas'.
     
    'Entrée du mot de passe sur une seconde page web
     Set IEdoc2 = IE.document
     Set InputExZoneTexte2 = IEdoc2.all("password")
     InputExZoneTexte2.Value = "Mon mot de passe"
     Set FormExCherche = IEdoc2.forms("auth_K4CSignInHandlerForm")
     FormExCherche.submit
     Do Until IE.readyState = READYSTATE_COMPLETE
     DoEvents
     Loop
     
     Set IE = Nothing
     Set IEdoc = Nothing
     Set IEdoc2 = Nothing
     
     End Sub
    La solution avec des waits m'intéresse. Même si le code prend deux plombes à s'exécuter, ce n'est pas grave .

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    c'est quoi la seconde url ou on te redirige ?? regarde dans ta barre d'address

    c'est la même ou pas ??

    au cas ou ce ne serait pas la même
    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
    Sub test()
        URL = "http://www.lexis360entreprises.fr/MigrationCheck.aspx?returnUrlFrmMg=/Home.aspx?RASReturn=true&pfl=true&AuthReturn=true"""
        Set ie = CreateObject("internetexplorer.application")
        With ie
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readystate <> 4:
            .document.getelementbyid("ctl00_ctl00_cphBody_cphBody_txtUserId").Value = "toto"
            .document.getelementbyid("ctl00_ctl00_cphBody_cphBody_btnMigrationCheck").Click
            Do: DoEvents: Loop While .locationurl = URL
            With .document
                .getelementbyid("Password").value = "titigrosminet"
                .getelementbyid("auth_K4CSignInHandlerForm").Click' j'ai un doute ici control si c'est bien son id 
     
                'recuperation eventuel d'element dans le document ici!!!
            End With
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Septembre 2017
    Messages : 7
    Par défaut
    Merci pour ta réponse.

    Voici la première URL : http://www.lexis360entreprises.fr/Mi...uthReturn=true
    Et la seconde : http://www.lexisnexis.com/fr/corp/RA...r/Home.aspx&t=[ ]&ipAddress=[ ]&webId=[ ]

    Le bouton sur la seconde page a pour Id "enabledImg".
    ("auth_K4CSignInHandlerForm" est le name de la form pour cette même page).

    Du coup, j'exécute :

    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
    Sub Test()
        URL = "http://www.lexis360entreprises.fr/MigrationCheck.aspx?returnUrlFrmMg=/Home.aspx?RASReturn=true&pfl=true&AuthReturn=true"""
        Set IE = CreateObject("internetexplorer.application")
        With IE
            .Visible = True
            .navigate URL
            Do: DoEvents: Loop While .readyState <> 4:
            .document.getElementById("ctl00_ctl00_cphBody_cphBody_txtUserId").Value = "Mon identifiant"
            .document.getElementById("ctl00_ctl00_cphBody_cphBody_btnMigrationCheck").Click
            Do: DoEvents: Loop While .LocationURL = URL
            With .document
                .getElementById("password").Value = "Mon mot de passe" --> Cette ligne ne s'exécute pas et message 'Erreur d'exécution 424 : objet requis'.
                .getElementById("enabledImg").Click
            End With
        End With
    End Sub
    Ton code a le même effet que le mien :
    - En 'pas à pas', il s'exécute sans problème.
    - En exécution globale, il s'arrête avant .getElementById("password").Value = avec le message Erreur d'exécution 424 : objet requis. (Pourtant, l'input champ texte mot de passe a bien pour name "password" et pour id="password" aussi).

    Est-ce que tu saurais pourquoi ça ne fonctionne pas ?

Discussions similaires

  1. [WD21] Problème pour se loguer sur un site web
    Par paul52 dans le forum WinDev
    Réponses: 0
    Dernier message: 08/09/2018, 21h09
  2. Pluggin Linkedin pour postuler à mettre sur son site web?
    Par soeursourire dans le forum Outils
    Réponses: 1
    Dernier message: 08/06/2018, 10h51
  3. se loguer sur un site web en c#
    Par n2engineer5 dans le forum C#
    Réponses: 5
    Dernier message: 14/01/2011, 16h36
  4. [MySQL] aide pour connection mysql avec du php sur mon site web
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 23/09/2007, 00h30
  5. Réponses: 13
    Dernier message: 30/11/2006, 21h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo