Macro incomplète?
Fermé
accro.a.lordi
Messages postés
16
Date d'inscription
dimanche 19 juillet 2009
Statut
Membre
Dernière intervention
5 février 2010
-
20 juil. 2009 à 05:56
eriiic Messages postés 24513 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 mars 2023 - 23 juil. 2009 à 19:40
eriiic Messages postés 24513 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 mars 2023 - 23 juil. 2009 à 19:40
A voir également:
- Macro incomplète?
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
- Macro Recorder - Télécharger - Divers Utilitaires
- Macro word - Guide
- Macro souris ✓ - Forum Windows
4 réponses
eriiic
Messages postés
24513
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
7 168
20 juil. 2009 à 07:20
20 juil. 2009 à 07:20
Bonjour,
Non, il faut que tu déclares la fonction.
Regarde sur l'exemple suivant, même site.
eric
Non, il faut que tu déclares la fonction.
Regarde sur l'exemple suivant, même site.
eric
accro.a.lordi
Messages postés
16
Date d'inscription
dimanche 19 juillet 2009
Statut
Membre
Dernière intervention
5 février 2010
21 juil. 2009 à 10:43
21 juil. 2009 à 10:43
Bonjour eriiic,
J'ai essayé la macro du deuxième exemple:
Declare Function GetSystemMetrics32 Lib "user32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Sub Site_avec_Login_et_Password()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
With ie
.Navigate ("https://www.brandbucket.com/names/zaza?source=ext")
.Visible = True
.Top = 0
.Left = 0
'Obtention en nombre de points de la largeur d'écran
'les deux commandes suivantes nécessitent la déclaration de la
'function GetSystemMetrics32 dans le haut du module
.Width = GetSystemMetrics32(SM_CXSCREEN)
.Height = GetSystemMetrics32(SM_CYSCREEN)
'attendre la fin du chargement, c'est à dire lorsqu'il sera indiqué
'le mot Terminé à gauche au bas de la page Internet
Do Until .ReadyState = 4
DoEvents
Loop
'Pour l'utilisation de la propriété getElementsByName,
'vous devez connaître le nom du control ActiveX,
'vous trouverez ce nom dans la Source de la page Internet
'login
Set DOCelement = .getElementsByName("login").Item
DOCelement.Value = "zaza
'password
Set DOCelement = .getElementsByName("pass").Item
DOCelement.Value = "xxZAZAxx"
End With
End Sub
Le site s'ouvre, mais après j'ai ce problème:
Erreur d'éxécution '438':
Propriété ou méthode non gérée par cet object
Puis quand je clique sur Débogage, il surligne
Set DOCelement = .getElementsByName("login").Item
J'ai bien sûr essayé en changeant le nom du site… mais j'ai toujours la même erreur.
Je débute dans l'apprentissage des macros (je lis actuellement le livre "VBA pour Office POUR LES NULS 4ème édition"). Cette macro m'intéresse énormément, car cela fait un mois que je cherche comment réaliser ceci:
"Sous Excel 2003, j'utilise l'importation de données Web pour mettre à jour régulièrement et automatiquement des bases de données avec la fonction suivante: Menu données, données externes, nouvelle requête sur le Web.
Cette méthode fonctionne parfaitement tant qu'il n'y a pas de nom d'utilisateur et de mot de passe à utiliser sur le site en question. Cependant, quand il y a un nom d'utilisateur et un mot de passe à utiliser quand j'effectue l'actualisation automatique, le système prend les données de la page d'accueil du site et non des pages voulues.
Même en ayant régler dans Internet Explorer pour qu'il retienne le mot de passe, cela ne fonctionne pas.
Quelqu'un a-t-il une solution pour arriver à réaliser ce projet? Toute proposition sera la bienvenue même si c'est avec un autre logiciel (OpenOffice.org Calc...) ou avec de la programmation (VBA…).
Je vous remercie pour vos conseils."
Et apparemment cette macro répondait à ma demande.
As-tu une solution?
MERCI
J'ai essayé la macro du deuxième exemple:
Declare Function GetSystemMetrics32 Lib "user32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Sub Site_avec_Login_et_Password()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
With ie
.Navigate ("https://www.brandbucket.com/names/zaza?source=ext")
.Visible = True
.Top = 0
.Left = 0
'Obtention en nombre de points de la largeur d'écran
'les deux commandes suivantes nécessitent la déclaration de la
'function GetSystemMetrics32 dans le haut du module
.Width = GetSystemMetrics32(SM_CXSCREEN)
.Height = GetSystemMetrics32(SM_CYSCREEN)
'attendre la fin du chargement, c'est à dire lorsqu'il sera indiqué
'le mot Terminé à gauche au bas de la page Internet
Do Until .ReadyState = 4
DoEvents
Loop
'Pour l'utilisation de la propriété getElementsByName,
'vous devez connaître le nom du control ActiveX,
'vous trouverez ce nom dans la Source de la page Internet
'login
Set DOCelement = .getElementsByName("login").Item
DOCelement.Value = "zaza
'password
Set DOCelement = .getElementsByName("pass").Item
DOCelement.Value = "xxZAZAxx"
End With
End Sub
Le site s'ouvre, mais après j'ai ce problème:
Erreur d'éxécution '438':
Propriété ou méthode non gérée par cet object
Puis quand je clique sur Débogage, il surligne
Set DOCelement = .getElementsByName("login").Item
J'ai bien sûr essayé en changeant le nom du site… mais j'ai toujours la même erreur.
Je débute dans l'apprentissage des macros (je lis actuellement le livre "VBA pour Office POUR LES NULS 4ème édition"). Cette macro m'intéresse énormément, car cela fait un mois que je cherche comment réaliser ceci:
"Sous Excel 2003, j'utilise l'importation de données Web pour mettre à jour régulièrement et automatiquement des bases de données avec la fonction suivante: Menu données, données externes, nouvelle requête sur le Web.
Cette méthode fonctionne parfaitement tant qu'il n'y a pas de nom d'utilisateur et de mot de passe à utiliser sur le site en question. Cependant, quand il y a un nom d'utilisateur et un mot de passe à utiliser quand j'effectue l'actualisation automatique, le système prend les données de la page d'accueil du site et non des pages voulues.
Même en ayant régler dans Internet Explorer pour qu'il retienne le mot de passe, cela ne fonctionne pas.
Quelqu'un a-t-il une solution pour arriver à réaliser ce projet? Toute proposition sera la bienvenue même si c'est avec un autre logiciel (OpenOffice.org Calc...) ou avec de la programmation (VBA…).
Je vous remercie pour vos conseils."
Et apparemment cette macro répondait à ma demande.
As-tu une solution?
MERCI
accro.a.lordi
Messages postés
16
Date d'inscription
dimanche 19 juillet 2009
Statut
Membre
Dernière intervention
5 février 2010
23 juil. 2009 à 11:54
23 juil. 2009 à 11:54
Bonjour,
Je relance le sujet, désolé, mais j'aimerais vraiment trouver une solution.
MERCI
Je relance le sujet, désolé, mais j'aimerais vraiment trouver une solution.
MERCI
eriiic
Messages postés
24513
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 mars 2023
7 168
23 juil. 2009 à 19:40
23 juil. 2009 à 19:40
Bonsoir,
J'ai testé ta dernière macro sur un site et 2-3 trucs ne marchaient pas non plus.
- le Do Until .ReadyState = 4
que j'ai mis en commentaire et remplacé par une tempo de 5s.
- les Set DOCelement ...
Que j'ai mis en commentaire et remplacé par une émulation clavier.
Il suffit de reproduire toutes les actions faites au clavier (souris interdite) pour te connecter.
Ici : 17 fois fleche bas, TAB, ident, TAB, pw, enter
Peut-être pas orthodoxe mais si ça peut te dépanner...
eric
J'ai testé ta dernière macro sur un site et 2-3 trucs ne marchaient pas non plus.
- le Do Until .ReadyState = 4
que j'ai mis en commentaire et remplacé par une tempo de 5s.
- les Set DOCelement ...
Que j'ai mis en commentaire et remplacé par une émulation clavier.
Il suffit de reproduire toutes les actions faites au clavier (souris interdite) pour te connecter.
Ici : 17 fois fleche bas, TAB, ident, TAB, pw, enter
Sub Site_avec_Login_et_Password()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
With ie
.Navigate ("https://lobby.ogame.gameforge.com/fr_FR/")
.Visible = True
.Top = 0
.Left = 0
'Obtention en nombre de points de la largeur d'écran
'les deux commandes suivantes nécessitent la déclaration de la
'function GetSystemMetrics32 dans le haut du module
.Width = GetSystemMetrics32(SM_CXSCREEN)
.Height = GetSystemMetrics32(SM_CYSCREEN)
'attendre la fin du chargement, c'est à dire lorsqu'il sera indiqué
'le mot Terminé à gauche au bas de la page Internet
' Do Until .ReadyState = 4
' DoEvents
' Loop
Application.Wait (Now + TimeValue("0:00:05"))
'Pour l'utilisation de la propriété getElementsByName,
'vous devez connaître le nom du control ActiveX,
'vous trouverez ce nom dans la Source de la page Internet
For i = 1 To 17
SendKeys "{DOWN}", True
Next i
SendKeys "{TAB}", True
SendKeys "login", True
SendKeys "{TAB}", True
SendKeys "pass", True
SendKeys "{ENTER}"
' 'login
' Set DOCelement = .getElementsByName("login").Item
' DOCelement.Value = "bla"
'
' 'password
' Set DOCelement = .getElementsByName("pass").Item
' DOCelement.Value = "blabla02"
'
'
End With
End Sub
Peut-être pas orthodoxe mais si ça peut te dépanner...
eric