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

Macros et VBA Excel Discussion :

hwnd d'un msgbox Internet Explorer géré à partir d'Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut hwnd d'un msgbox Internet Explorer géré à partir d'Excel
    Bonsoir,
    Je suis entrain de réaliser un code qui permettra de remplir un formulaire sur le net à partir de données issues d'une feuille excel. je suis arrivé à renseigner différents champs de la page web.
    Différentes routines de validation des données saisies sur la page web existent (écrites en js). si les données sont correctes, j'arrive à télécharger (ouvrir) un fichier pdf par macro vba.
    ci joint cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
        Do
            hwnd = FindWindow(vbNullString, "Téléchargement de fichiers")
            PauseTimer 1   'wait 1 seconde
            k = k + 1
        Loop While hwnd = 0
             SendKeys "%v"   'ouvre le fichier récupéré
            PauseTimer 1
            IE.Quit            'quitter IE
        End If
    ...
    Mon problème réside dans le fait que je n'arrive pas à récupérer le hwnd d'une msgbox d'erreurs lorsque les données saisies ne sont pas valides. (pour arrêter le code au cas de la présence d'erreurs de données).
    Ce msgbox à pour intitulé: Message de la page Web. avec une indication sur les champs invalides et un boutton OK
    peut être je suis à côté de la plaque du fait que je suis novice dans les API
    ou que je cherche à compliquer les choses.
    J'espère une aide.
    Merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    J'ai fais quelques recherches il y a quelque temps sur la prise de controle d'IE via VBA pour répondre a une autre question.
    Durant les recherche je suis tombé sur ça
    Je n'ai pas trop le temps de gratter dedans, mais il y a une foultitude d'info, donc peut être que la gestion des msgbox est abordée.
    Si j'étais toi je regarderais du coté des HtmlElementError... tu as surement possibilité d'intercepter l'erreur avant même qu'elle ne s'affiche a l'écran.
    avec juste un petit coup d'oeil y'a déjà ca qui sent bon
    Citation Envoyé par HtmlElementErrorHandle
    Lorsque vous créez un délégué HtmlElementErrorEventHandler, vous identifiez la méthode qui gérera l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour plus d'informations sur les délégués de gestionnaires d'événements, consultez Événements et délégués.
    Bon courage
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Merci pour ta réponse. en fait, j'ai pu trouver le handle de cet msgbox récalcitrant et le fermer, mais seulement si IE est lancé manuellement et non à partir de mon code.
    Par contre, dans le cas de mon code, il reste bloqué tant qu'on ne ferme pas ledit msgbox. un message survient alors après une dizaine de secondes.
    Microsoft Office Excel attend la fin de l'exécution d'une action OLE d'une autre application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IE.Document.all("btnEnvoyer").Click 'ici blocage du code vba au cas ou la routine de validation des données envoi le fameux msgbox
    hwnd_err= FindWindow(vbNullString, "Message de la page Web")
    reste à 0 (normal puisque la ligne ci-dessus n'est exécuté qu'après fermeture manuelle du msgbox)

    Pour l'interception d'erreur, je ne pense pas qu'il y est erreur au niveau de IE (c'est un msgbox, banal ou non, lancé à partir d'une routine js de contrôle de validité des données) ou bien je me trompe.

    Enfin, j'ai essayé de récupérer les variables de validation issues du code source de la page; même sort. Le code vba est bloqué tant que le msgbox reste ouverte).
    Merci

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour,
    après plusieurs tests et tâtonnements, le msgbox d'IE bloque la continuation de la macro excel ici (au cas où les données ne sont pas valides au vue des routines internes de la page web)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IE.Document.all("btnEnvoyer").Click 
    '--->ici blocage du code vba au cas ou la routine de validation des données envoi le fameux msgbox
    'suite du code
    si les données sont valides, le msgbox n'est pas envoyé et le code continu normalement.
    J'ai essayé de faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IE.Document.all("btnEnvoyer").Select
    sendkeys "{ENTER}{ENTER}"
    'suite du code
    j'avoue que c'est pas cartésien. ceci fonctionne aléatoirement alors que je cherche un fonctionnement catégorique.
    j'ai laissé tomber ces essais.

    Je pense laisser la main à l'utilisateur de fermer ce msgbox mais je désire connaître (dans mon code) si un msgbox a été envoyé par la page ou non.

    une précision. si IE a été lancé manuellement. j'ai pu trouver le handle de ce mesgbox à l'aide d'une macro test.
    Merci

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je fais un délestage de ce sujet vu qu'aucune réponse qui pourrait m'aider n'a été proposée

    juste une chose, le select de cette ligne n'est pas valable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IE.Document.all("btnEnvoyer").Select
    sendkeys "{ENTER}{ENTER}"
    'suite du code
    j'avais un on error resume next
    ceci fonctionne aléatoirement alors que je cherche un fonctionnement catégorique.
    fonctionnait quand le bouton avait le focus

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

    Juste une question, à tout hasard, n'étant pas du tout spécialiste de ce genre de problème : la référence "Microsoft Internet Controls" est bien cochée ?

Discussions similaires

  1. [XL-2010] Pilotage Internet explorer contenant javascript depuis excel
    Par anthony14123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/12/2013, 16h08
  2. Réponses: 0
    Dernier message: 07/05/2010, 12h35
  3. Réponses: 9
    Dernier message: 21/07/2009, 11h57
  4. Internet Explorer - Cliquer sur les "MsgBox"
    Par apprenti_VBA dans le forum Général VBA
    Réponses: 2
    Dernier message: 20/05/2009, 18h07
  5. Réponses: 6
    Dernier message: 04/09/2008, 20h17

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