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 :

Liste déroulante dans internet explorer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 11
    Par défaut Liste déroulante dans internet explorer
    Bonjour à tous,

    A partir d'une feuille EXCEL contenant un certain nombre d'informations, je dois remplir un formulaire sur internet.
    Je me connecte dons à IE6 et lance la page web sans problème.
    Je remplis mes champs texte également sans problème avec ce genre de code trouvé sur le net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set IEdoc = ie.Document
    Set DOCelement = IEdoc.getElementsByName("coord_x").Item
    DOCelement.Value = Cells(1, 1).Value
    Set DOCelement = IEdoc.getElementsByName("coord_y").Item
    DOCelement.Value = Cells(1, 2).Value
    Ca se complique avec la liste déroulante. Je vais tenter d'être clair...

    Un champ texte est associé à ma liste déroulante. Quand je saisis dans le champ texte, cela influe sur la liste et la valeur s'affiche en fonction du texte que je viens de saisir.
    A partir d'EXCEL, donc, je me suis dis que j'allais renseigner le champ texte avec ma méthode ci-dessus et qui a fait ses preuves et que ma liste déroulante allait suivre.
    Nada !
    Le champ texte est bien renseigné, mais ma liste déroulante reste bloquée sur "-- CHOISISSEZ --".

    Comment faire pour que ma liste déroulante prenne la valeur du champ texte lié ?


    Voici le code source de la feuille (le champ texte est nommé "mask") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="box" style="padding:5px">masque de selection 
    							<input class="ageNumberFormCell" type="text" name="mask" style="width:80px" onkeyup="javascript:dosearch(species_db, document.addobs.elements.mask, document.addobs.elements.id_species);"/>
    							<select size="1" style="width:270px" name="id_species">
    								<option value="0">-- CHOISISSEZ --</option>
    								<option value="51">Carotte</option><option value="54">Courgette</option><option value="55">Céleris</option><option value="53">Patate</option><option value="52">Tomate</option></select>
    						</div>
    En espérant m'être fait comprendre...

    En vous remerciant de votre aide !

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 11
    Par défaut
    Bonjour à tous,

    Petit Up car je deviens chèvre avec ce truc.
    Personne n'a d'idée, ou ne me suis-je pas fait comprendre ?
    Pas évident à expliquer clairement.



    Je tente une nouvelle explication.



    A partir d'une feuille EXCEL, contenant un certain nombre d'informations, je souhaite alimenter une base de données en ligne via un formulaire sur le web.
    Je me connecte donc à IE6 et lance la page web sans problème.
    Je remplis mes champs texte également sans problème avec ce genre de code trouvé sur le net :

    Mon code simplifié :


    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
    'Je crée mon objet IE
    Set ie = CreateObject("internetexplorer.application")
    ie.Visible = True
    blnIe = True
     
    strURL = "http://www.faune-iledefrance.org/index.php?m_id=10&backlink=rset&taxo_group=o"
    ie.navigate (strURL)
     
    Do While ie.Busy
    Application.Wait (Now + 0.5 / 3600 / 24)
    Loop
    Application.Wait (Now + 1 / 3600 / 24)
     
    Set IEdoc = ie.Document
     
    'Partie 1 du formulaire
    Set DOCelement = IEdoc.getElementsByName("coord_x").Item
    DOCelement.Value = Cells(1, 1).Value
    Set DOCelement = IEdoc.getElementsByName("coord_y").Item
    DOCelement.Value = Cells(1, 2).Value
     
    'Clic sur le bouton "Afficher" (qui s'appelle "disp_coord") pour valider la partie 1
    IEdoc.All("disp_coord").Click
     
    Set DOCelement = IEdoc.getElementsByName("date").Item
    DOCelement.Value = Cells(1, 3).Value
    Set DOCelement = IEdoc.getElementsByName("mask").Item
    DOCelement.Value = Cells(1, 4).Value
    Set DOCelement = IEdoc.getElementsByName("total_number").Item
    DOCelement.Value = Cells(1, 5).Value
    Set DOCelement = IEdoc.getElementsByName("remark").Item
    DOCelement.Value = Cells(1, 6).Value
     
    'Clic sur le bouton "Ajouter" (qui s'appelle "ADDOBS") pour valider la partie 2
    IEdoc.All("ADDOBS").Click
     
    'Et je referme mon objet IE
    ie.Quit
    Ce bout de code fonctionne. A deux détails près :

    1.
    Quand je l'exécute pas à pas, pas de souci. Mais quand je le laisse faire, le code plante en "Erreur d'exécution '91' : Variable objet ou variable de bloc With non définie". Un problème de réinitialisation de mon DOCelement ?

    2.
    Le champ "mask" est lié à une liste déroulante avec, dedans, une liste de choix. En mode normal, quand j'écris dans le champ "mask", la liste déroulante réagit automatiquement en fonction de ma saisie. Probablement avec un évènement déclenché sur le changement du "mask". Mais via ma macro EXCEL, quand je renseigne le champ "mask", la liste déroulante ne suit pas et reste à la valeur par défaut "-- CHOISISSEZ --".

    Comment faire en sorte que la liste déroulante prenne la valeur du champ "mask" ?
    Ou comment agir directement sur la liste déroulante en lui imposante la valeur que je souhaite ?


    Voici le code source de la feuille EXCEL. Je n'ai mis que la partie relative au champ "mask" et à la liste déroulante associée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class="box" style="padding:5px">masque de selection 
    <input class="ageNumberFormCell" type="text" name="mask" style="width:80px" onkeyup="javascript:dosearch(species_db, document.addobs.elements.mask, document.addobs.elements.id_species);"/>
    <select size="1" style="width:270px" name="id_species">
    <option value="0">-- CHOISISSEZ --</option>
    <option value="51">Carotte</option><option value="54">Courgette</option><option value="55">Céleris</option><option value="53">Patate</option><option value="52">Tomate</option></select>
    </div>
    En espérant m'être fait comprendre...
    Si ce n'est pas le cas, n'hésitez pas à me demander d'autres infos. Car je deviens chèvre !

    En vous remerciant de votre aide !

  3. #3
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Pour ton premier point, vu que tu as lancé un click, il doit falloir attendre que la page se rafraîchisse.
    Pour ton deuxième point, vu que je n'ai jamais travaillé de cette façon, je vais avoir du mal à t'aider. Mais je suppose que l'objet liste déroulante ne se comporte pas comme ça et il doit y avoir une autre propriété que Value que tu dois pouvoir modifier (comme le ligne sélectionnée par exemple). Ensuite, du Javascript à l'air de s'éxecuter, il faudrait peut-être comprendre de quoi il s'agit pour être sûr qu'il n'y a pas un problème d'interaction.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 11
    Par défaut
    Oui, je me suis aperçu qu'il manquait un petit temps de réflexion le temps que la page se charge. J'ai ajouter un wait et tout est rentré dans l'ordre.

    Pour la liste déroulante, c'est bon aussi.
    J'ai fini par trouver une propriété SelectIndex qui m'a beaucoup aidé !

    Merci !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/04/2011, 19h49
  2. Ajax avec 2 listes déroulantes avec Internet Explorer
    Par filiplarlibe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/03/2010, 13h17
  3. Erreur dans internet explorer
    Par jnic00 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2005, 09h01
  4. [BCB 5.0] Ajouter un bouton dans internet explorer
    Par GthrDns dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/02/2004, 22h54
  5. Comment récupérer les adresses WWW dans Internet Explorer ?
    Par chaours dans le forum Web & réseau
    Réponses: 7
    Dernier message: 03/09/2003, 14h27

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