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 :

Adaptation d'un code VB6 pour VBA (login via WebBrowser)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Par défaut Adaptation d'un code VB6 pour VBA (login via WebBrowser)
    Bonjour,
    j'ai trouvé sur le forum (ici : http://www.developpez.net/forums/d11...d-automatique/) exactement ce que je cherchais (merci à fab256), mais en VB6 et mes très faibles compétences ne me permettent pas d'adapter le code à VBA pour excel. Sauriez-vous m'aider ?
    Merci par avance !
    Le code VB6 :
    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
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' Etape 1: Utiliser WebBrowser control pour charger la page web
            WebBrowser1.Navigate("http://www.website.com/login.aspx")
     
            System.Threading.Thread.Sleep(2000) ' Attendre 2 secondes le temps de chargement
     
            ' Etape 2: Remplir les input username et password
            Dim theElementCollection As HtmlElementCollection
            theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
            For Each curElement As HtmlElement In theElementCollection
                Dim controlName As String = curElement.GetAttribute("name").ToString
                If controlName = "UserNameTextBox" Then
                    curElement.SetAttribute("Value", "Mettre ton Username ici")
                ElseIf controlName = "PasswordTextBox" Then
                    curElement.SetAttribute("Value", "Mettre ton Password ici")
                    'En plus, on peut avoir la valeur de l'element value comme ceci:
                    'MessageBox.Show(curElement.GetAttribute("Value"))
                End If
            Next
     
            ' Etape 3: Cliquer automatiquement sur le bouton Login
            theElementCollection = WebBrowser1.Document.GetElementsByTagName("input")
            For Each curElement As HtmlElement In theElementCollection
                If curElement.GetAttribute("value").Equals("Login") Then
                    curElement.InvokeMember("click")
                    ' Appeler la methode click du bouton Login
                End If
            Next
        End Sub
    End Class

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Parmi les tutoriels à disposition sur le forum :

    Formation Excel - VBA débutant

    Interaction avec Internet Explorer via VBA Excel

    Pour la pause à la place de Sleep utiliser Application.Wait comme documentée dans l'aide VBA interne.

    Voir les nombreux exemples dans les discussions de ce forum sur le sujet …

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Par défaut
    Bonjour Marc-L,
    Merci beaucoup de l'intérêt et de la réponse déjà...
    Je me suis documenté sur les interactions avec internet explorer...
    Là, c'est un peu différent, il s'agit du webbrowser intégré à Excel que je veux utiliser...
    Et si j'arrive parfaitement à me "loguer" en interagissant avec internet explorer comme ici :
    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
    Sub connexion2()
     
    'Nécessite la référence à "Microsoft Internet Controls".
    Dim ie As InternetExplorer
    Dim IEdoc As Object
    Dim DOCelement As Object
     
    Dim fichier_internet As String
    Dim fichier_local As String
     
    Set ie = New InternetExplorer
    ie.Visible = True
    ie.Navigate ("https://mon.adresse.web")
     
    ' attente de fin de chargement
    Do Until ie.ReadyState = 4
    DoEvents
    Loop
     
    Set IEdoc = ie.Document
     
    'login
    Set DOCelement = IEdoc.getElementsByName("login").Item
    DOCelement.Value = "mon login"
     
    'password
    Set DOCelement = IEdoc.getElementsByName("pass").Item
    DOCelement.Value = "mon mot de passe"
    'DOCelement.Select
     
    'connexion
    Set DOCelement = IEdoc.forms(0)
    DOCelement.submit
     
    End Sub
    je n'y arrive absolument pas avec le webbrowser intégré, ce qui est ce que je souhaite faire...
    En fouillant sur les forums j'ai trouvé la solution postée initialement en VB6... Mais je n'arrive pas à en déduire le code approprié....
    Dans le code VB6 (langage inconnu pour moi), il n'y a pas que Sleep qui bloque, j'ai du rouge de partout quand je le colle dans un module vba...
    Je précise que j'arrive très bien à intégrer le webbrowser à excel, et à afficher la page souhaitée,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.WebBrowser1.Navigate "http://ma.page.web"
    c'est bien la partie de "login" qui bloque...


    En espérant avoir été plus clair dans ma demande...
    Merci encore,

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Je découvre donc que depuis la version 2016 Excel disposerait d'un Webbrowser intégré …
    Avant il s'agissait d'un ActiveX ou d'une bibliothèque forcément externe à Excel.
    Dans ce cas, je laisse le soin de continuer à ceux disposant de la même version …

    Autre point : as-tu au moins testé le code trouvé dans le langage initial
    afin de voir si vraiment cela correspond à ce que tu cherches ?
    Sinon c'est une perte de temps à tenter de le convertir !

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 39
    Par défaut
    J'ai un niveau très bas en VBA, et ne suis donc pas sûr de tout comprendre mais il me semble que ce que j'appelle "webbrowser intégré" est bien un ActiveX ??
    Le code vba fonctionne (via ouverture d'internet explorer "externe")
    Le code vba pour ouvrir le "webbrowser" intégré fonctionne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WebBrowser1.Navigate("http://www.website.com/login.aspx")
    Quand à tester le code VB6, je n'ai aucune idée de comment procéder pour tester ce type de code directement.... J'ai juste affiché la source de la page web pour m'assurer du bon nom des variables ("login" et "pass") à compléter (comme dans la version internet explorer qui elle, fonctionne).....
    Je n'ai pas d'autres pistes pour avancer...

    Merci,

  6. #6
    Candidat au Club
    Homme Profil pro
    Logisticien
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Logisticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Par défaut
    Bonjour. Je sais que c'est un poste assez vieux , mais je cherche également la solution sous excel 2016 avec webbrowser intègré. Personne n'a une solution svp?
    Je ne trouve absolument rien sur le sujet mise à part des postes pour vb6.
    Bien cordialement.

Discussions similaires

  1. espace entre ligne code html pour VBA
    Par tamtam64 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/07/2015, 01h58
  2. Code VB6 pour referencer deux tables dans un formulaire
    Par mianiser dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/02/2011, 14h28
  3. Réponses: 2
    Dernier message: 10/12/2010, 23h41
  4. Code VB6 pour éxecuter simplement un script vbs
    Par didierdarras dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/09/2007, 17h55
  5. Code VB6 à adapter pour VB4
    Par Whombat dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/03/2006, 10h50

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