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 :

[VBA-E] Changer de frame sous IE (multi-fenêtre)


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut [VBA-E] Changer de frame sous IE (multi-fenêtre)
    Bonjour,

    afin de m'éviter de fastidieuses tâches répétitives de remplissage de formulaires sous IE, j'ai décider de piloter IE via Excel (qui contient mes données à entrer)

    méthode "artisanale"
    je me débrouille tant bien que mal à base de SendKeys "{TAB}" pour atteindre les boutons que je recherche et je simule donc les frappes du clavier.
    mais je me confronte à un problème car la page est constitué de différentes frames et je ne sais pas comment faire pour atteindre le bouton valider qui se trouve dans une autre frame.

    problème
    mon curseur se trouve sur la frameDuHaut, je voudrais atteindre la frameDuBas pour continuer mes SendKeys "{TAB}" et SendKeys "{ENTER}"

    Comment "sauter" de frame ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Bonjour

    Fait des recherches sur le forum pour trouver d'autres techniques de pilotage des pages html depuis Excel
    (mots clés: "Microsoft HTML Objects Library", "Microsoft Internet Controls", InternetExplorer)


    et ensuite pour piloter un frame:

    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
        'nécessite d'activer la référence Microsoft HTML Objects Library
        'nécessite d'activer la référence Microsoft Internet Controls
        Dim IE As internetExplorer
        Dim maPageHtml As HTMLDocument
        Dim Helem As HTMLElementCollection
     
        Set IE = CreateObject("internetExplorer.Application")
        IE.Visible = True
        IE.navigate "http://www.NomDuSite.html"
            Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
            Loop 'attend la fin du chargement
     
        Set maPageHtml = IE.document
     
        'frames.Item(0) correspond au 1er frame de la page html
        'Affiche le texte contenu dans le frame
        MsgBox maPageHtml.frames.Item(0).document.documentElement.innerText


    michel

  3. #3
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut
    Comme je suis assez débutant, j'étaits limité dans ma recherche en ce qui concerne les mots clés, merci pour cette piste.

    J'essaie la méthode (demain) et je vous tiens au courant.

    merci

  4. #4
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut
    j'ai essayé ta méthode, et beaucoup d'autres depuis maintenant 1h30 et ça fonctionne toujours pas.

    je ne peux pas vous montrer la page en question car c'est sur une page professionnelle sécurisée.

    je vais tenter de vous exposer la situation via cette capture ci-dessous


    je vous montre donc une partie de la structure disponible ici (il manque le menu de gauche) : https://www.netdict.fr/html/gdm/fs_d...tinataire.html

    ma situation initiale est donc que je me trouve grâce à des validations,
    dans une case située dans le frame affichant la page "dec_destinataire.shtml"
    et que je dois valider par le bouton qui se trouve dans la frame affichant la page "dec_dr_destinataire_bas.html"
    en sachant que je ne peux pas l'atteindre à l'aide de déplacement avec TAB (puisque l'on change de frame).

    J'espère avoir été assez clair et que vous saurez m'éclairer.

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    un exemple qui ouvre ta page html, remplit le premier champ (il te restera à complèter le remplasage des autres champs) et simule l'action clic sur le bouton valider


    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
       'nécessite d'activer la référence Microsoft HTML Objects Library
        'nécessite d'activer la référence Microsoft Internet Controls
        Dim IE As internetExplorer
        Dim maPageHtml As HTMLDocument
        Dim Helem As Object
        Dim Hx As IHTMLInputElement
     
        Set IE = CreateObject("internetExplorer.Application")
        IE.Visible = True
        IE.navigate "https://www.netdict.fr/html/gdm/fs_dec_dr_destinataire.html"
            Do Until IE.readyState = READYSTATE_COMPLETE
            DoEvents
            Loop 'attend la fin du chargement
     
        Set maPageHtml = IE.document
     
        'frames.Item(0) correspond au 1er frame de la page html
        Set Helem = maPageHtml.frames.Item(0).document.DocumentElement. _
            getElementsByTagName("input")
        'insère un texte dans le 1er champ
        Set Hx = Helem.Item(1)
        Hx.Value = "essai"
     
        '
        '....
        '
     
        Set Helem = maPageHtml.frames.Item(1).document.DocumentElement. _
            getElementsByTagName("input")
        'Clique sur le bouton "Valider"
        'MsgBox Helem.Item(0).Value
        Helem.Item(0).Click


    michel

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Par défaut
    13:23 - merci, je vais essayer ça ...

    13:46 - j'y arrive toujours pas ... faut dire que la solution donnée fonctionne surement sur l'exemple que je donnais mais je pense qu'en pratique c'est plus compliqué ...

    14:02 - je viens de t'envoyer un message privé, Michel

    16:43 - j'arrête de me prendre la tête, l'utilisateur devra cliquer lui même pour que la macro continu ... je reprend ça la semaine prochaine.

Discussions similaires

  1. changer couleur formulaire sous vba
    Par niavlys77 dans le forum IHM
    Réponses: 2
    Dernier message: 12/12/2007, 10h11
  2. [VBA]localiser un appel fonction sous excel
    Par random dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/01/2006, 10h09
  3. [Menu généré] Changer la frame de dest pour 1 lien
    Par Nicos77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/11/2005, 15h17
  4. [VBA][Excel] Changer la source d'un graphique
    Par titflocon dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/10/2005, 11h40
  5. Comment changer de couleur sous ksh
    Par Filippo dans le forum Linux
    Réponses: 4
    Dernier message: 17/10/2005, 13h16

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