VBA - Comment cliquer sur bouton page HTML ?

Bonjour à tous,

Avec cette macro, je cherche à me connecter à mon compte Yahoo! Mail mais quand j'arrive sur la seconde page ou l'on doit entrer

son mot de passe, là sa plante et me sort l'erreur 424 "Objet requis"...

Le code s'arrête sur la ligne surlignée...

Je voudrais (Si cela est possible bien-sûr !):

1) Que le code me connecte à mon compte mail.

2) Que le code ouvre un nouveau mail (Ecrire).

3) Que le code ajoute du texte pré-défini dans le corps du mail.

4) Que le code ajoute 2 pièces jointes au mail.

Un petit coup de main s'il vous plait !!!

Le code:

Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWNORMAL = 1

Sub LoginYahooMail()
    '
    ' LoginYahooMail Macro
    '
    '
    Dim IE              As Object
    Dim IEPage          As Object
    Dim IEPageElement   As Object

    Dim URL As String
    Dim UNElementID As String
    Dim PWElementID As String
    Dim SIElementID As String
    Dim EcrireElementID As String
    Dim UserName As String
    Dim Password As String

    URL = "https://login.yahoo.com"

    UNElementID = "login-username"

    PWElementID = "login-passwd"

    SIElementID = "login-signin"

    EcrireElementID = "yui_3_16_0_ym19_1_1507583555478_1690"

    UserName = "nom d'utilisateur @yahoo.fr"

    Password = "mot de passe"

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    apiShowWindow IE.hWnd, SW_MAXIMIZE

    'Navigue jusqu'à l'URL.
    IE.Navigate URL

    'Attend que la page web soit totalement chargée.
    Do Until IE.readyState = 4 'READYSTATE_COMPLETE in early binding
        DoEvents
    Loop

    'Créer le document de l'URL.
    Set IEPage = IE.Document

    'Recherche le UserName TextBox en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(UNElementID)
        IEPageElement.Value = UserName
        Set IEPageElement = Nothing

    'Clique sur le Bouton "Suivant" en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(SIElementID)
        IEPageElement.Click

    'Recherche le Password TextBox en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(PWElementID)
        IEPageElement.Value = Password
        Set IEPageElement = Nothing

    'Clique sur le Bouton "Se connecter" en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(SIElementID)
        IEPageElement.Click

    'Clique sur le bouton "Ecrire" en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(EcrireElementID)
        IEPageElement.Click

    'Vide les variables object.
    Set IEPageElement = Nothing
    Set IEPage = Nothing
    Set IE = Nothing

End Sub

bonjour,

essaie ceci

PWElementID = "passwd"

Bonjour h2so4,

Ne marche pas…

Erreur 438 "Propriété ou méthode non gérée par cet objet"

bonjour,

j'ai oublié ceci

remplace ton code qui gère PWElementID

   Set IEPageElement = IEPage.getElementsbyname(PWElementID)
        IEPageElement.Item.Value = Password
        Set IEPageElement = Nothing

Ne marche pas non plus...

Le mot de passe ne s'affiche pas dans l'élément textbox de la page web...

On dirais que le UserName et le Password ne sont pas sur la même page web...

Page web 1:

a) On rentre sont UserName.

b) On clique sur le bouton "Suivant".

Page web 2:

a) On rentre son Password.

b) On clique sur le bouton "Se connecter".

Du coup, n'y aurait-il pas un souci avec "Set IEPage = IE.Document" qui se réinitialiserai en basculant sur la deuxième page web ???

Une piste peut-être ???

sans doute ...

essaie dès lors ceci

Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWNORMAL = 1

Sub LoginYahooMail()
'
' LoginYahooMail Macro
'
'
    Dim IE As Object
    Dim IEPage As Object
    Dim IEPageElement As Object

    Dim URL As String
    Dim UNElementID As String
    Dim PWElementID As String
    Dim SIElementID As String
    Dim EcrireElementID As String
    Dim UserName As String
    Dim Password As String

    URL = "https://login.yahoo.com"

    UNElementID = "login-username"

    PWElementID = "login-passwd"

    SIElementID = "login-signin"

    EcrireElementID = "yui_3_16_0_ym19_1_1507583555478_1690"

    UserName = "nom d'utilisateur @yahoo.fr"

    Password = "mot de passe"

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    apiShowWindow IE.hWnd, SW_MAXIMIZE

    'Navigue jusqu'à l'URL.
    IE.Navigate URL

    'Attend que la page web soit totalement chargée.
    Do Until IE.readyState = 4    'READYSTATE_COMPLETE in early binding
        DoEvents
    Loop

    'Créer le document de l'URL.
    Set IEPage = IE.Document

    'Recherche le UserName TextBox en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(UNElementID)
    IEPageElement.Value = UserName
    Set IEPageElement = Nothing

    'Clique sur le Bouton "Suivant" en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(SIElementID)
    IEPageElement.Click

    Do Until IE.readyState = 4    'READYSTATE_COMPLETE in early binding
        DoEvents
    Loop
    Set IEPage = IE.Document

    'Recherche le Password TextBox en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(PWElementID)
    IEPageElement.Value = Password
    Set IEPageElement = Nothing

    'Clique sur le Bouton "Se connecter" en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(SIElementID)
    IEPageElement.Click

    'Clique sur le bouton "Ecrire" en utilisan le Element ID.
    Set IEPageElement = IEPage.getElementByid(EcrireElementID)
    IEPageElement.Click

    'Vide les variables object.
    Set IEPageElement = Nothing
    Set IEPage = Nothing
    Set IE = Nothing

End Sub

Bonjour H2so4,

Désolé pour le retour tardif de ma réponse, mais je n'avais pas vu que tu avais répondu autre chose...

Je viens d'essayer ta modif du code, mais ne marche pas non plus...

J'ai un peu avancé de mon coté et j'ai trouver une solution pour entrée le Password...

Ce n'est pas très propre, mais ça fonctionne en utilisant la méthode "SendKeys"...

Du coup, j'arrive bien à me connecter à mon compte Yahoo!Mail, mais maintenant je n'arrive pas à cliquer sur le bouton "Mail"...

Le code s'arrête là ou j'ai surligné...

J'ai remarqué que l'ID du bouton "Mail" change à chaque ouverture de la page web...

Question:

Comment cliquer sur ce fichu bouton "Mail" sans passer par son ID ???

Attribute VB_Name = "LoginYahooMail"
Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWNORMAL = 1

Sub LoginYahooMail()
    '
    ' LoginYahooMail Macro
    '
    '
    Dim IE As Object
    Dim IEPage As Object
    Dim IEPageElement As Object

    Dim URL As String
    Dim UNElementID As String
    Dim PWElementID As String
    Dim SIElementID As String
    Dim MailElementID As String
    Dim EcrireElementID As String
    Dim UserName As String
    Dim Password As String

    Dim mMessage As Object
    Dim mConfig As Object
    Dim mChps

    URL = "https://login.yahoo.com"

    UNElementID = "login-username"

    PWElementID = "login-passwd"

    SIElementID = "login-signin"

    MailElementID = "yui_3_18_0_3_1507819529096_1124" ' ID qui change à chaque ouverture de la page web.

    EcrireElementID = "yui_3_16_0_ym19_1_1507583555478_1690" ' ID qui change à chaque ouverture de la page web.

    UserName = ' "nom_d'utilisateur@yahoo.fr"

    Password = ' "mot de passe"

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    apiShowWindow IE.hWnd, SW_MAXIMIZE

    'Navigue jusqu'à l'URL.
    IE.Navigate URL

    'Attend que la page web soit totalement chargée.
    Do Until IE.readyState = 4 'READYSTATE_COMPLETE in early binding
        DoEvents
    Loop

    Application.Wait (Now + TimeValue("0:00:03")) 'Retarde de 03 secondes l'exécution de la suite du code...

    'Créer le document de l'URL.
    Set IEPage = IE.document

    'Recherche le UserName TextBox en utilisant l'élement ID.
    Set IEPageElement = IEPage.getElementByid(UNElementID)
        IEPageElement.Value = UserName
        Set IEPageElement = Nothing

    'Clique sur le Bouton "Suivant" en utilisant l'élement ID.
    Set IEPageElement = IEPage.getElementByid(SIElementID)
        IEPageElement.Click

    'Attend que la page web soit totalement chargée.
    Do Until IE.readyState = 4 'READYSTATE_COMPLETE in early binding
        DoEvents
    Loop

    Application.Wait (Now + TimeValue("0:00:03")) 'Retarde de 03 secondes l'exécution de la suite du code...

    'Entre le "Password" en simulant des appuis sur les touches du clavier.
    SendKeys "+{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"
    SendKeys "{x}"

    SendKeys "{ENTER}" 'Simule un appuis sur la touche "Entrée".

    'Attend que la page web soit totalement chargée.
    Do Until IE.readyState = 4 'READYSTATE_COMPLETE in early binding
        DoEvents
    Loop

    Application.Wait (Now + TimeValue("0:00:03")) 'Retarde de 03 secondes l'exécution de la suite du code...

    'Clique sur le bouton "Mail" en utilisant l'élement ID.
    Set IEPageElement = IEPage.getElementByid(MailElementID)
        IEPageElement.Click

    'Clique sur le bouton "Ecrire" en utilisant l'élement ID.
    Set IEPageElement = IEPage.getElementByid(EcrireElementID)
        IEPageElement.Click

    Set mMessage = CreateObject("CDO.Message")
    With mMessage
        Set .Configuration = mConfig
            .From = ""
            .To = Range("R33").Value
            .Cc = ""
            .Subject = ""
            .TextBody = "Bonjour " & Range("I8").Value & "," & vbCrLf _
                        & vbLf _
                        & vbLf _
                        & vbLf _
                        & "Cordialement." & vbCrLf _
                        & vbLf _
                        & vbLf _
                        & "Mr Xxxxx Xxxxx" _
                        & vbLf _
                        & vbLf _
                        & vbLf
                        .AddAttachment "C:\Users\Xxxxx Xxxxx\Documents\Conditions Commerciales.pdf"
    End With

    'Vide les variables object.
    Set IEPageElement = Nothing
    Set IEPage = Nothing
    Set IE = Nothing

    Set mMessage = Nothing
    Set mConfig = Nothing
    Set mChps = Nothing

End Sub
Rechercher des sujets similaires à "vba comment cliquer bouton page html"