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