VBA et Internet [Résolu]

sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 24 janv. 2008 à 08:22 - Dernière réponse : sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention
- 12 mai 2009 à 22:18
Bonjour,
Je travaille dans un bureau d'études fluides où je dessine et créer des notes de calculs. Actuellement, je dois déposer des plan sur ce site internet : [url]https://vpnssl.bouygues-construction.com/dana-na/auth/url_12/welcome.cgi/url

Le problème c'est qu'il est sécurisé et que je dois donner par 2 fois (une fois sur la page à laquelle vous avez accès et une fois sur celle qu'elle ouvre une fois les mots de passes envoyé) mon nom et mon mot de passe avant d'accédér à l'interface qui me permet d'envoyer mes plans... alors j'ai pondu sous mon logiciel de dessin (autocad) qui suporte le VBA ce code là mais je n'arrive pas à avoir accèder à l'endroit où je dois laisser mon mon et mon mot de passe...

Je vous laisse mon début de code qui peut être lancer via tout interpréteur VBA ( ajouter les références Microsoft Internet Control, Microsoft HTML Object Library) :

Sub Lancer_Edoc()
    Dim ie As New InternetExplorer
    Dim RegEx As RegExp, RegMatch As MatchCollection
    Dim MyStr As String

    Set ie = New InternetExplorer
    Set RegEx = New RegExp
ie.Navigate2 "https://vpnssl.bouygues-construction.com/dana-na/auth/url_12/welcome.cgi"

    While ie.Busy
    Wend
   
Dim htmldoc As HTMLDocument
    Set htmldoc = ie.Document

Dim SearchTextField As HTMLObjectElement
Dim htmlElement As HTMLObjectElement
'Dim htmlElement As HTMLText

For Each htmlElement In htmldoc.all

   '   If (htmlElement.tagName Like "INPUT") Then
         
If (InStr(1, htmlElement.outerHTML, "type=text") > 0 Or InStr(1, htmlElement.outerHTML, "type=") = 0) Then
     Set SearchTextField = htmlElement

'Debug.Print
Debug.Print "ok"

     End If

'End If

'Debug.Print htmlElement.outerHTML
'Debug.Print htmlElement.innerText
'Debug.Print htmlElement.TabIndex
Next
On Error Resume Next
SearchTextField.Value = "oj"

ie.Visible = True

End Sub
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 3 févr. 2008 à 13:55
3
Merci
salut,

forcément en faisant un simpple copier/coller dans une classe qui n'est pas instanciée....

http://www.cijoint.fr/cj200802/cij5853209893353.xls

++
Dev est le diminutif de développeur, pas devin !
<hr size ="2" width="100%" />

Merci PCPT 3

codes-sources a aidé 81 internautes ce mois-ci

Commenter la réponse de PCPT
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 25 janv. 2008 à 02:31
0
Merci
salut,

voici le code en VB6 (qui sera identique ou presque)

Option Explicit
Private WithEvents AfIE As AfCls_IE

Private Sub Form_Load()
    Set AfIE = New AfCls_IE
    AfIE.Url = "https://vpnssl.bouygues-construction.com/dana-na/auth/url_12/welcome.cgi"
    AfIE.Visible = True '<- à mettre à false pour masquer...
    AfIE.Navigate
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set AfIE = Nothing
End Sub

Private Sub AfIE_LoadCompleted()
    AfIE.SetObjectValueByName "username", "NOM D'UTILISATEUR"
    AfIE.SetObjectValueByName "password", "MOT DE PASSE"
    AfIE.ClickButtonByName "btnSubmit" '<- pas testé mais
devrait suffire
End Sub

la classe AfCls_IE nécessite aussi un timer (classe et module)
tu pourras trouver le tout ici :
http://www.vbfrance.com/codes/POL-PUT-ON-LINE-APPLICATION-UPLOAD-RAPIDE-IMAGES_45148.aspx

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 25 janv. 2008 à 08:04
0
Merci
Merci,
Je vais tenter cela au plus tôt, néanmoins, le code m'échappe un peu. Dis-le moi si je me trompe :

J'utilise mon code et à l'instant où ma page s'ouvre, ton code (événement ?) prend le relai et rempli les champs et envoi l'info
Commenter la réponse de sechanbask
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 25 janv. 2008 à 13:36
0
Merci
en effet tu te trompes ^^

tu ouvres la page (code fourni au dessus) avec la classe (fournie dans la source/lien), elle te renvoie le moment où la page est prête, et tu continues à partir de l'évènement renvoyé

tout çà c'est un nouveau projet... plus besoin du code que tu avais indiqué

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 27 janv. 2008 à 12:58
0
Merci
Le code que tu m'a donné, je l'ai mis dans un module nommée module1,j'ai inséré les éléments suivants:

AfCls_IE.cls
AfCls_Timer.cls
Mod_Timer.bas

Mais lorsque je lance le private sub form_load, VBA me fait une erreur de compilation :

"valide seulement dans un module objet"

Comme je suis débutant, je ne sais pas quoi faire, j'ai vérifié que j'avais les réferences :

'           MSHTML.TLB (Microsoft HTML Object Library)
'           shdocvw.dll (Microsoft Internet Controls)
Commenter la réponse de sechanbask
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 27 janv. 2008 à 14:03
0
Merci
salut,

le message d'erreur est pourtant clair, il ne faut pas mettre le code dans une module standard

tu dois ajouter AfCls_IE.cls, AfCls_Timer.cls et Mod_Timer.bas à ton projet
tu dois déclarer (et instancier) uniquement AfCls_IE.cls, ce avec WITHEVENTS, qui n'est supporté que par un UC, une FORM (userform en VBA), ou une module de classe (module objet comme l'indique l'erreur)

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 3 févr. 2008 à 10:04
0
Merci
Je suis désolé mais j'avoue qu'une fois encore je n'arrive pas à lancer ton code... je suis extrêmenent débutant et je n'envisage pas d'en faire une passion folle j'ai pas de littérature :

je te laisse le fichier excel dans lequel j'ai ajouté les modules et classes nécessaires. J'aimerais que tu y regardes pour me dire ce que j'ai mal fait ou pas fait:

http://www.cijoint.fr/cj200802/cij4195230253354.xls

Je l'ai mis sur excel mais après je m'en servirais sous autocad...

Merci de prendre du temps pour moi alors que tu l'a déjà fait..
Commenter la réponse de sechanbask
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 6 févr. 2008 à 22:01
0
Merci
La programmation m'intéresse un peu mais les 3/4 de ton code est pour
moi du chinois donc je ne comprends pas comment ça marche alors pour automatiser la seconde page je pense que je ne saurais pas faire et comme c'est sécurisé pour que nous seuls puissions déposer des plans... je ne peux pas te donner les codes d'accès. Merci beaucoup de m'avoir aidé.

P.S. Je suis navré d'avoir un niveau tellement bas que ça te rende méprisable. Je me permettrais seulement de rajouter que le problème avec les débutants c'est qu'ils débutent. ça ne tiendrait
qu'à moi je les pendraient tous haut et court, heureusement que je ne
suis pas extrêmiste...
Commenter la réponse de sechanbask
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 6 févr. 2008 à 23:20
0
Merci
sur le tout premier lien, dans les commentaires j'explique le fonctionnement de la source. peut-être qu'une partie t'aidera pour aborder le principe de la classe et d'IE en particulier.

détrompe-toi, je ne méprise pas les débutants.
sinon je n'aurais même pas regardé ton lien ;)

le fait est que pour l'erreur que tu as eu ("valide seulement dans un module objet"), tu as dû avoir les boutons "fin", "débogage" et "aide"

"aide" t'aurais mené vers l'explication plus complète du principe de l'instanciation (objet <> module).
vu la suite c'est que tu n'as pas utilisé l'aide. dans ce cas, à mon sens, ce n'est pas qu'on veut comprendre/apprendre mais juste la solution.
j'en deviens alors.... pragmatique

bon courage dans tes futures démarches, n'hésite pas au besoin...
PCPT  [AFCK]
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Commenter la réponse de PCPT
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 10 févr. 2009 à 21:57
0
Merci
Rebonjour,

PCPT, grâce à ton code, j'ai gagné un temps précieux. je vais chercher comment faire pour le faire fonctionner avec internet explorer 7. Mise à jour, windows XP oblige.
Commenter la réponse de sechanbask
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 10 févr. 2009 à 23:25
0
Merci
salut,
6 février pour ma dernière réponse... je m'étonnais de n'en avoir aucun souvenir

normal, çà fait un an
merci d'avoir donné suite, bonne continuation


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Commenter la réponse de PCPT
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 30 mars 2009 à 10:58
0
Merci
J'essaie désespérément d'envoyer les information de connexion mais rien n'y fait :

il passe bien dans le Private Sub AfIE_LoadCompleted() (j'ai mis une ligne de debug.print pour vérifier) mais il n'envoie pas les nom d'utilisateur et les mots de passe.
il trouve que je suis connecté.
Il ouvre bien le navigateur, mais il n'interagit pas du tout avec lui, et ne me renvoie pas d'erreur. Est-ce que le problème vient d'une déclaration du navigateur ?

Avec IE6, il passe du temps dans Break mais pas avec IE7...

PCPT, pourrais-tu s'il te plait regarder ce problème ?
Merci de bien vouloir m'aider de nouveau.
Commenter la réponse de sechanbask
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 16 avril 2009 à 20:30
0
Merci
je veux bien t'aider, bien sûr, mais sans pouvoir tester (cf réseau privé bloqué), çà risque d'être difficile

il faut que le problème soit reproductible, tu te doutes 
Commenter la réponse de PCPT
sechanbask 21 Messages postés mardi 22 avril 2003Date d'inscription 12 mai 2009 Dernière intervention - 12 mai 2009 à 22:18
0
Merci
Nul besoin de réussir à se logger pour voir que le programme n'envoie pas les informations à IE7.
Sur la page, les champs reste désespérément vides...

Si tu as le temps de jeter un oeil...ça marchait très bien pour IE6, mais pour IE7, ça ne rempli pas les champs.

Le problème c'est que j'ai vraiment besoin de cette boite à plan et de IE7 (pour les problème lié à un serveur de fichier ou le glisser déplacer ne peut pas être interdit)

Merci d'avance
Commenter la réponse de sechanbask

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.