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

VBA Access Discussion :

Interaction avec Internet Explorer via VBA Excel : Variable ou variable de bloc With non définie [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 188
    Par défaut Interaction avec Internet Explorer via VBA Excel : Variable ou variable de bloc With non définie
    Bonjour.

    Je cherche à utiliser VBA depuis Access 2010 pour ouvrir Internet Explorer et effectuer une connexion à un site.

    On arrive sur une page avec champs Login, Mot de Passe, Bouton connexion.

    J'ai utilisé l'excellentissime tuto de Qwazerty "Interaction avec Internet Explorer via VBA Excel"
    http://qwazerty.developpez.com/tutor...-et-vba-excel/

    Un immense merci et bravo à vous.

    Je n'ai pas pu tout lu jusqu'au bout car je me suis arrêté au stricte nécessaire pour arriver à mes fins et aussi, sinon surtout, car je ne comprends pas tout…

    J'ai donc gardé ces morceaux de codes pour arriver à cette procédure :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub Connexion_site()
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputGoogleZoneTexte As HTMLInputElement
    Dim InputGoogleBouton As HTMLInputElement
    Dim FormGoogleCherche As HTMLFormElement
     
    'Chargement de la page web Enquestion
    IE.navigate "http://www.lesiteenquestion.fr/index.php"
     
    'Affichage de la fenêtre IE
    IE.Visible = True
     
    'On attend le chargement complet de la page
    WaitIE IE
     
    'On pointe le membre Document
    Set IEDoc = IE.Document
     
    'On pointe notre Zone de texte
    Set InputGoogleZoneTexte = IEDoc.all("username")
     
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputGoogleZoneTexte.Value = "LOGIN.LOGIN"
     
    'On attend la fin de la recherche
    WaitIE IE
     
    '##########################################################################
     
    'On pointe notre Zone de texte
    Set InputGoogleZoneTexte = IEDoc.all("password")
     
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputGoogleZoneTexte.Value = "MOTDEPASSE"
     
    'On attend la fin de la recherche
    WaitIE IE
     
    '##########################################################################
     
    'On pointe la Form qui contient Zone de Texte + Bouton (entre autres)
    Set FormGoogleCherche = IEDoc.Forms("form_connexion form_required")
     
    'On exécute l'action Submit de la Form
    FormGoogleCherche.submit
     
    '##########################################################################
     
    'On libère les variables
    Set IE = Nothing
    Set IEDoc = Nothing
     
    End Sub
    Les éléments à saisir présentés ici sont fictifs.

    Je tapes "LOGIN.LOGIN", car les logins comportent un point (des fois que ce serrait la source du problème).

    Elle fonctionne :
    -Internet Explorer s'ouvre,
    -La page s'affiche,
    -Le champ Login est renseigné,
    -Le champ mot de passe est renseigné,
    -L'action de validation est activée,
    -La page connectée et affichée.

    Mais en toile de fond, Access affiche un message (d'erreur ?)

    "Erreur d'exécution '91':
    Variable ou variable de bloc With non définie"

    Et propose d'utiliser le débogueur qui pointe la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputGoogleZoneTexte.Value = "LOGIN.LOGIN"
    Même si la procédure fonctione, cette interruption pour cause d'erreur m’empêche d'enchainer sur l'étape suivante.

    A jouer avec des choses qu'on ne maitrise pas, on se retrouve avec des pannes qu'on ne peut gérer.

    Le plus étonnant, c'est que le code produit l'effet escompté, mais affiche quand même le message d'erreur qu'à la fin.

    Encore plus curieux : si je me connecte depuis Firefox à la page en question et que je lance la fonction depuis Access, pas de message d'erreur !

    Si je suis déconnecté depuis Firefox (ce qui ce produit une fois que la connexion est établie depuis IE), alors le message d'erreur revient !

    J'ai surement manqué quelque chose, mais je suis incapable de trouver quoi…

    D'avance merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ça sent le bug ***ique...

    si on part à la pèche :

    1) en haut des modules de code VBA ajouter si c'est pas déjà fait : OPTION EXPLICIT
    puis menu > Debogage > Compiler pour détecter des erreurs de code

    2) Vérifier que InputGoogleZoneTexte n'est pas NOTHING quand le message s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    'On pointe notre Zone de texte
    Set InputGoogleZoneTexte = IEDoc.all("username")
     
    MsgBox InputGoogleZoneTexte Is Nothing
    
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputGoogleZoneTexte.Value = "LOGIN.LOGIN"
    Si l'objet n'est pas Null (cas normal), il doit s'afficher "Faux"

    3) Ajouter peut être un WaitIE IE juste après FormGoogleCherche.Submit

    4) Il vaut mieux mettre Set IEDoc = Nothing avant Set IE = Nothing car, en toute logique, on libère les enfants avant les parents !

    5) ajouter un gestionnaire d'erreur à la fonction et au pire mettre Resume Next sur l'erreur 91 ou ON ERROR Resume Next en tête de la fonction (pas beau mais cache l'erreur !)
    Dernière modification par Invité ; 08/07/2017 à 01h11.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 188
    Par défaut
    Citation Envoyé par galoir Voir le message
    Bonjour,
    Bonjour.

    Merci pour la rapidité de la réponse et désolé pour la lenteur de la mienne.
    Citation Envoyé par galoir Voir le message
    1)[…] en haut des modules de code VBA ajouter si c'est pas déjà fait : OPTION EXPLICIT
    Ça, c'était fait.
    Citation Envoyé par galoir Voir le message
    [/B]puis menu > Debogage > Compiler pour détecter des erreurs de code
    Ça, je l'ai fait, mais il ne s'est absolument rien passé.
    Citation Envoyé par galoir Voir le message
    2)[…]Vérifier que InputGoogleZoneTexte n'est pas NOTHING quand le message s'affiche
    [CODE]MsgBox InputGoogleZoneTexte Is Nothing[CODE]
    Si l'objet n'est pas Null (cas normal), il doit s'afficher "Faux"
    Le message a affiché "Faux".

    Le problème, c'est que dans ma démarche de débogage, je n'ai lancé le code qu'après avoir installé la boite de message qui fonctionne, mais interrompt le code (la boite attend une réponse).

    Une fois la boite de message supprimée du code, ce dernier se comporte comme escompté, sans message d'erreur.

    Est-ce que le débogage aurait corrigé quelque-chose ?

    Du coup, je n'ai pas essayé les interventions suivantes que vous préconisez.

    A tous les coups ça marche !

    Encore merci beaucoup !

  4. #4
    Invité
    Invité(e)
    Par défaut
    ne pas mettre RESOLU au fil ça porte malheur...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 188
    Par défaut
    Bonjour.

    Citation Envoyé par galoir Voir le message
    ne pas mettre RESOLU au fil ça porte malheur...
    Cela permet aussi de laisser ceux qui vous ont aidé poster un message supplémentaire.

    Pour rappel, je n'ai pas trouvé la panne, qui semble s'être réparée toute seule...

    Le "Résolu" suivra...

    Encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interaction avec Internet Explorer via php/javascript
    Par lenas_tshaleb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 03/04/2017, 10h30
  2. [XL-2016] Interaction avec Internet Explorer avec VBA Excel
    Par papilou86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2017, 11h12
  3. Interaction avec Internet Explorer via VBA Excel
    Par hamdy06 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/05/2016, 16h32
  4. Probleme d'interaction avec Internet Explorer Via VBA
    Par ThaHardy dans le forum Access
    Réponses: 0
    Dernier message: 03/06/2015, 10h52
  5. Réponses: 13
    Dernier message: 01/06/2006, 17h20

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