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 :

Récupération de données sur site web avec mot de passe [XL-2010]


Sujet :

Macros et VBA Excel

  1. #21
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Je dois être un peu fatigué, et avec le match, dur dur de finir ce soir.
    Je n'arrive même plus à faire fonctionner proprement mon premier script, qui marchait pourtant bien avant.

    ------------------------------------------------------------------------------------------------------------------------------------------
    Edit :
    De retour, avec la ferme intention d'arriver au bout
    Je ne pourrai pas y passer trop de temps car j'ai encore énormément de boulot qui m'attends, mais j'espère y arriver rapidement.
    D'ailleurs, merci à vous tous pour m'aiguiller sur la bonne solution.

    patricktoulon, suggères-tu de rester totalement en mode IE ou totalement en mode javascript ? C'est bien ça ?

  2. #22
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Pour récupérer une table, voir par exemple dans cette discussion
    Puisque je n'arrive plus à utiliser mon premier script, qui m'a été fourni automatiquement par Excel, j'ai décidé de suivre ton exemple et tout réécrire proprement.

    Pour commencer, je vous donne le code épurée de la page avec les infos à récupérer :
    Code html : 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
    <!-- ***** TABLEAU ****** -->
    <div >
        <div class="span12">
            <form id="form_recherche" action="gestion_panier.php" method="post" onsubmit="return verifier_qteres(this);">
                <table class="listing-table table table-striped table-bordered">
                    <thead>
                        <tr>
                            <td class="listing-table__compare-thead">
                                <a href="/comparateur.php"><span class="btn btn-info-main btn-mini">COMPAREZ</span></a>
                            </td>
                            <td class="listing-table__brand-thead">Marques</td>
                            <td class="listing-table__reference-thead">Référence</td>
                            <td class="listing-table__gamme-thead">G</td>
                            <td class="listing-table__designation-thead">Désignation</td>
                            <td class="listing-table__ppi-thead">
                                <span class="ppi-thead__donnee-1">Donnée 1</span>
                                <span class="ppi-thead__donnee-2">Donnée 2</span>
                            </td>
                        </tr>
                    </thead>
                    <tbody>
     
                        <tr class="listing-table__compare-data">
                            <td class="listing-table__compare-data">
                                <!--<input class="checkbox" type="checkbox" name="" id="">-->
                                <input class="checkbox" type="checkbox" name="check_4242006217754" id="" onclick="...">
                                <div id="divcomparateur"></div>
                            </td>
                            <td class="listing-table__brand-data"><img align="middle" border=0 src="xxx.jpg" width="80px" /></td>
                            <td class="listing-table__reference-data">
                                <div class="listing-table__ref-wrapper">
                                    <span class="listing-table__ref-top">Nom du produit</span>
                                    <span class="listing-table__bottom" id="coeff1"></span>
                                </div>
                                <a href="produit.php?itemid=4242006217754" class="btn btn-info-main btn-mini">En savoir +</a>
                            </td>
                            <td class="listing-table__gamme-data"></td>
                            <td class="listing-table__designation-data">
                                <a class="img-product-popover" data-image="yes" data-imageurl="xxx.jpg" href="produit.php?itemid=4242006217754">désignation du produit</a>
                            </td>
                            <td class="listing-table__ppi-data">
                                <span id="ppi1" class="ppi-data__ppi ">info 1</span>
                                <span class="ppi-data__prix-net" id="zzznet1"></span>
                            </td>
                        </tr>
     
                    </tbody>
                </table>
            </form>
        </div>

    Mon tableau a ici 2 lignes (1 pour thead et 1 pour tbody) et 6 colonnes.

    Dans le lien fourni par Marc-L, la table avait un ID="base".
    Dans mon cas, j'ai une class.
    Mais si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .document.GetElementById("base").Rows
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .document.getelementsbyclassname("listing-table table table-striped table-bordered").Rows
    , j'ai une erreur d'exécution 438 : Propriété ou méthode non gérée par cet objet.
    Par quoi dois-je remplacer le GetElementById ?

  3. #23
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    bonjour,

    la différence c'est le s à la fin d'élément ... ta deuxième fonction renvoi une colllection d'éléments ... tu peu atteindre le premier en utilisant l'indice 0...

    essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With .document.getelementsbyclassname("listing-table table table-striped table-bordered")(0).Rows
    ...

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    salut bill
    c'est une chose que je lui avais dis dans un réponse précédente
    ca n'a pas été capté

    alors je répète

    2 façons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set monelement=getelementsbyclassname("trucmachin")(0)
    ou en indirect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set groupeelement=getelementsbyclassname("trucmachin")
    set monelement=groupeelement(0)
    0 étant son index dans groupeelement et étant le 1 er item puisque les items commence a 0
    0 étant le 1 er
    1 étant le 2 Emme
    2 étant le 3 Emme
    etc.....

    le copier coller ca n'est pas toujours bon

  5. #25
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Excuse moi patricktoulon, je n'avais en effet pas fait le lien .

    En tout cas, ça marche !

    Et pour pousser la réflexion, plutôt que de tout écrire sur ma feuille Excel, j'ai réfléchi à comment récupérer directement la donnée dont j'ai besoin.
    Dans ce cas, il vaut sans doute mieux partir avec les id.
    Par exemple, une id qui m'intéresse est l'id ppi1.

    J'ai pensé au départ écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(numero_Ligne, 3).Value = .document.GetElementById("ppi1").Value
    c'est-à-dire que la cellule (numero_Ligne, 3) de ma feuille Excel prend la valeur de l'id ppi1

    Apparemment je me suis trompé dans la syntaxe car j'ai une erreur 438 à nouveau. Et ici je ne pense pas qu'il s'agisse de (0) car il ne s'agit pas d'un tableau

    Une suggestion ?

  6. #26
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    Comme indiqué dans l'excellentissime tutoriel Interaction avec Internet Explorer via VBA Excel,
    remplacer getElementById par all pour voir …



    __________________________________________________________________________________________
    Égalité des sexes : nouveau concept inventé par les hommes pour ne plus payer le restaurant !

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    a tu déjà endendur parler de requete avec l'object(Microsoft xmlhtttp)
    car d'apres ce qui me semble entrevoir de ton besions ce serait peut etre plus indiqué

    ensuite comme te la dis marc il y a le "all"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(x,y)=.document.all("ipp1).value
    et la encore il y aurait pas mal de chose a dire
    value n'est peut etre pas la bonne propriété il est possible que tu dois utilise la propriété "innertext"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(x,y)=.document.all("ipp1).innertext
    je n'est pas le link de ta page je ne peut donc pas savoir a ta place
    le mieux pour savoir quelle est la marche a suivre pour récupérer cette donné c'est d'utiliser la touche F quand tu est sur ta page
    dans la fenetre Fil y a une petite fleche en haut a gauche
    clique dessus et clique ensuite sur l'element de ta page
    dans la fenetre F12 a droite tu toute le propriété de l'element
    regarde la capture d'ecran Nom : demo f12.jpg
Affichages : 401
Taille : 787,7 Ko

  8. #28
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Merci à tous les 2.

    J'ai parcouru ton lien, Marc-L.
    Il est bien fait. J'ai pas pu tout regardé, mais ce que j'en ai vu m'a bien aidé. J'en ai profité pour nettoyer mon code.
    Par contre, merci de m'avoir mis sur la piste du all, car même avec ce site, je n'aurai peut-être pas trouvé tout de suite.

    Sinon, cela fonctionne avec .innertext
    J'avais bien regardé le code source, que j'avais repris un peu plus tôt. Je découvre à présent la fenêtre des propriétés (existe-t-elle aussi sur Firefox ?).
    Par contre, où peut-on voir qu'il s'agit d'un innertext ?
    Nom : Sans titre.png
Affichages : 470
Taille : 117,9 Ko

    Voici le code à présent :
    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
    Sub Connexion()
    'Déclaration des variables
    Dim IE As Object ' InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim nom_Produit As String, numero_Ligne_1er_Produit As Integer, numero_Colonnes_Produits As Integer, nb_Lignes As Integer
    Dim varFeuille As Worksheet
     
    'Initialisation des variables
    Set IE = CreateObject("InternetExplorer.application") 'ouverture d'internet explorer
    Set varFeuille = ActiveSheet
    numero_Ligne_1er_Produit = 3
    numero_Colonnes_Produits = 2
    'nb_Lignes = WorksheetFunction.CountA(Columns(numero_Colonnes_Produits))
    nb_Lignes = 5
     
    'Accès au site web
        IE.Visible = True ' Affichage de la fenêtre IE
        IE.navigate "http://www.xxx.com/cnx_site.php?logout" ' Chargement de la page principale du site avec déconnexion (il est impératif de ne pas être connecté au démarrage du script)
        WaitIE IE ' on attend le chargement complet de la page
     
    'Connexion
        Set IEDoc = IE.document
        IEDoc.parentWindow.execScript "javascript:document.leform.compte.value='login';"
        IEDoc.parentWindow.execScript "javascript:document.leform.TxtPasse.value='mot de passe';"
        IEDoc.parentWindow.execScript "javascript:document.leform.submit();"
        WaitIE IE ' on attend le chargement complet de la page
     
        numero_Ligne = numero_Ligne_1er_Produit
        For numero_Ligne = numero_Ligne_1er_Produit To nb_Lignes
     '       MsgBox numero_Ligne
            nom_Produit = Cells(numero_Ligne, numero_Colonnes_Produits)
     
        'Accès au produit cherché
            IE.navigate "http://www.xxx.com/recherche.php?search=" & nom_Produit ' va sur la page du produit cherché
            WaitIE IE ' on attend le chargement complet de la page
     
            varFeuille.Cells(numero_Ligne, 3) = IEDoc.all("ppi1").innerText ' On reprend la valeur de l'élément recherché
        Next
     
    IE.navigate "http://www.xxx.com/cnx_site.php?logout" ' Déconnexion
    IE.Quit ' Fermeture d'Internet Explorer
    Set IE = Nothing ' On libère la variable IE
    Set IEDoc = Nothing ' On libère la variable IEDoc
     
    End Sub
     
    'Procédure placée dans un module standard pour vérifier le chargement total de la page.
    Sub WaitIE(IE As Object)
       'On boucle tant que la page n'est pas totalement chargée
       Do Until IE.readyState = 4
          DoEvents
       Loop
    End Sub
    Une dernière erreur, erreur 91 (Variable objet ou variable de bloc With non définie), se produit parfois dans ce code en ligne 37, mais pas tout le temps.
    Et difficile de savoir quand, j'ai pas bien compris à quel moment ça marche et à quel moment ça déconne.
    Une idée ?

    J'ai une piste à ce sujet.
    Il arrive que ma page web ne comporte pas d'id ppi1.
    Dans ce cas, le script se bloque.
    J'aimerai que le script se poursuive, inscrive "0" dans ma cellule et mémorise la ligne en question dans une variable (disons qu'elle s'appelle VarErreurs).

    J'ai tenté avec une condition du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            If IEDoc.all("ppi1").innerText Is Nothing Then
                varFeuille.Cells(numero_Ligne, 3) = "0"
            Else
                varFeuille.Cells(numero_Ligne, 3) = IEDoc.all("ppi1").innerText ' On reprend la valeur de l'élément recherché
            End If
    Ca aboutit sur une erreur 91.
    Mes souvenirs de codage VBA sont trop lointains et je ne vois pas trop quoi faire. Peut-être avec On Error Resume Next, mais je ne vois pas comment la mettre en place.

    Un avis ?
    Ca n'explique pas tout, mais c'est peut-être ce qui débloquera le code.

  9. #29
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    Pour Firefox, c'est Examiner l'élément via le menu contextuel (clic droit)
    et pour l'erreur 91, vérifier les variables de la ligne …

    Si vraiment c'est l'absence d'un élément, il est possible de contrôler via la fonction Instr dans le code HTML du document.



    __________________________________________________________________________________________
    Suppositoire : invention qui restera dans les annales !

  10. #30
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Si vraiment c'est l'absence d'un élément, il est possible de contrôler via la fonction Instr dans le code HTML du document.
    Peux-tu m'aider un peu plus ? Avec Instr, on vérifie si une chaîne de caractères est présente dans une autre. Mais comme il s'agit de vérifier dans le code lui-même, je ne vois pas comment l'utiliser.

  11. #31
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If InStr(IE.document.body.innerhtml, "ppi1") = 0 Then
        varFeuille.Cells(numero_Ligne, 3) = "0"
     Else
        varFeuille.Cells(numero_Ligne, 3) = IEDoc.all("ppi1").innerText ' On reprend la valeur de l'élément recherché
     End If
    Dernière modification par AlainTech ; 25/07/2014 à 06h33. Motif: Suppression de la citation inutile

  12. #32
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Aparté pour Robert : l'utilisation d'injection de Java script comme par exemple cette ligne de ton code

    IE.Document.parentWindow.execScript "javascript:document.leform.submit();"

    ne permet pas d'avoir un retour en fin de procédure, certes pas vraiment utile dans ce cas,
    mais pour des fonctions inhérentes à la page web, localisées dans la collection scripts du Document,
    cela pourrait s’avérer très utile dans certains cas ou, tout au moins, pouvoir détecter un changement d'état (évènement ?)
    comme par exemple onended lorsque ReadyState ne peut servir à détecter la fin de mise à jour d'une page …

    Si tu as déjà mis en place une telle approche, merci d'avance !

    __________________________________________________________________________________________
    Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)

  13. #33
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Super, ça marche

    Pour finir, certaines cellules de ma colonne numero_Colonnes_Produits sont vides ou contiennent juste un espace.
    Dans ce cas, il est inutile de faire une recherche.

    Ca semble simple, mais je n'arrive pas à faire fonctionner ma formule.
    Dans ma boucle For, qui parcoure toutes mes cellules de cette colonne, j'ai ajouté au tout début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nom_Produit = Cells(numero_Ligne, numero_Colonnes_Produits)
    If Not IsEmpty(nom_Produit) And nom_Produit <> " " Then ...
    mais ça ne change rien, toutes les cellules de la colonne sont toujours prises en compte.

    Pouvez-vous m'aider une dernière fois ?

  14. #34
    Invité
    Invité(e)
    Par défaut
    en effet, IE.readyState = 4 vérifi si la page à été complètement chargé ce qui est déjà cas quand tu injectes "javascript:document.leform.submit();
    en revanche en vérifiant si la page est rechargé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Procèdure placée dans un module standard pour vérifier le chargement total de la page.
    Sub WaitIE(IE)
     'On boucle tant que la page n'est pas rechargée
       Do Until IE.Busy = False
       Debug.Print IE.Busy
          DoEvents
       Loop
       'On boucle tant que la page n'est pas totalement chargée
       Do Until IE.readyState = 4
       Debug.Print IE.Busy
          DoEvents
       Loop
    End Sub
    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
    Sub ConnexionAMonSite()
     'Déclaration des variables
    Dim IE As Object ' InternetExplorer
    'CHARGEMENT GENERAL
    Set IE = CreateObject("InternetExplorer.application")
       'Chargement d'une page Web
       IE.Visible = True
    IE.navigate "http://www.gpdis.com/"
    WaitIE IE
     
     
    IE.document.parentWindow.execScript "javascript:document.leform.compte.value='Login';"
    IE.document.parentWindow.execScript "javascript:document.leform.TxtPasse.value='TxtPasse';"
    IE.document.parentWindow.execScript "javascript:document.leform.action='http://www.developpez.net/forums/';"
    IE.document.parentWindow.execScript "javascript:document.leform.submit();"
     
     WaitIE IE
    End Sub
     
    'Procèdure placée dans un module standard pour vérifier le chargement total de la page.
    Sub WaitIE(IE)
     'On boucle tant que la page n'est pas rechargée
       Do Until IE.Busy = False
       Debug.Print IE.Busy
          DoEvents
       Loop
       'On boucle tant que la page n'est p'AS totalement chargée
       Do Until IE.readyState = 4
       Debug.Print IE.Busy
          DoEvents
       Loop
    End Sub
    Dernière modification par AlainTech ; 25/07/2014 à 06h36. Motif: Suppression de la citation inutile

  15. #35
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SkyCorp Voir le message
    Super, ça marche

    Pour finir, certaines cellules de ma colonne numero_Colonnes_Produits sont vides ou contiennent juste un espace.
    Dans ce cas, il est inutile de faire une recherche.

    Ca semble simple, mais je n'arrive pas à faire fonctionner ma formule.
    Dans ma boucle For, qui parcoure toutes mes cellules de cette colonne, j'ai ajouté au tout début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nom_Produit = Cells(numero_Ligne, numero_Colonnes_Produits)
    If Not IsEmpty(nom_Produit) And nom_Produit <> " " Then ...
    mais ça ne change rien, toutes les cellules de la colonne sont toujours prises en compte.

    Pouvez-vous m'aider une dernière fois ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If trim("" & nom_Produit)  <> "" Then

  16. #36
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Tout marche comme sur des roulettes

    J'ai du modifier le Sub WaitIE en reprenant le code complet de rdurupt
    Sinon, la connexion n'a pas le temps de s'effectuer, et donc la recherche ne peut être faite.
    Pourtant, ça marchait bien avec le code allégé pour WaitIE avant que je ne rajoute cette condition sur le contenu de mes cellules.

    Merci encore à tous !

  17. #37
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    en revanche en vérifiant si la page est rechargé
    Merci Robert !

    Dans le doute j'ai remplacé ma ligne correspondant au WaitIE par ton code puis
    j'ai tout déplacé dans un simple module mais non, c'est du pareil au même avec ce genre de page :
    lorsqu'elle est mise à jour, ni Busy ni aucun ReadyState (en suivant la hiérarchie des objets) ne bougent !
    (Ton code fonctionne bien aussi dans un module de feuille de calculs, enfin pour une page classique …)

    J'ai rajouté un calcul temporel : la main est rendue au bout de 16 centièmes de secondes
    alors que la mise à jour nécessite entre deux et douze secondes ! …

    C'est comme la discussion d'itwoo avec le site NASDAQ quand la table est mise à jour via un Java script interne,
    je pensais à savoir lorsque ce script a terminé son processus …

    J'ai peut-être trouvé une nouvelle astuce - fonctionnant sur une page me posant problème - mais
    je trouve plus logique d'attendre la confirmation de fin d'exécution du script en interceptant onended par exemple …

    Bon j'arrête de polluer ce fil du reste résolu …

    __________________________________________________________________________________________
    "Oui chérie" : gain de temps …

  18. #38
    Invité
    Invité(e)
    Par défaut
    oui Marc dans l'URL fourni dans l'exemple il s'agit d'un framework style symphonie (on le reconnait au format de l'url )avec des contrôles Ajax et là j’avoue ne pas m'y être penché!

  19. #39
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    En ce moment je tombe sur des pages, du genre quasi impossible de déclencher un bouton
    ni le submit de sa forme par aucune des deux méthodes classiques …

    Une page est passée via une troisième voie (mais par pour d'autres) et c'est ce qui m'a mis sur la voie de l'astuce …

    Je vais voir dans la discussion d'itwoo où il en est avec le NASDAQ
    et si besoin lui proposer l'astuce pour voir si elle fonctionne aussi de son côté …
    Sinon l'occasion se présentera bien dans une prochaine discussion !


    __________________________________________________________________________________________
    Les ex : c'est comme la prison, si tu y retournes, c'est que tu n'as pas compris la leçon !

  20. #40
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    je n'ai pas le lien mais je suis persuadé que l'on peut se passer de IE

    dans tout les cas il y a un JSON donc avec F12 clique sur capture et regarde ou se trouve le lien du JSON
    et sert toi d'une requete argument avec tes mot de passe dans le send ou l'url modifié par celui ci

    ensuite si il n'y a pas de ipp1 c'est normal que tu est une erreur
    forcement élément (rien) ne peut pas avoir de innertext

    construit ta condition sur la présence de celui ci et non sur son( innertext ou value) comme tu veux
    arc je suis en train de finaliser le model avec un seul vbs pour itwoo

    c'est coton j'ai 5 arguments a envoyer dans le run SC.....
    et j'ai l'impression que le len des arguments ont une limite ca m'aide pas

    et pour NASDAQ c'est pas la peine il y a qu'une seule requête donc inutile de pédaler entre vba et vbs
    c'est pour Euronext all equities que je suis en train de travailler

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [AC-2003] Base de données sur le Web avec MySQL et Access ?
    Par gwenagan dans le forum Access
    Réponses: 3
    Dernier message: 17/04/2015, 07h49
  2. Réponses: 1
    Dernier message: 15/11/2011, 10h03
  3. [XL-2003] importer données du web avec mot de passe
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/10/2009, 18h26
  4. protection d'une page web avec mot de passe
    Par chimene dans le forum ASP.NET
    Réponses: 3
    Dernier message: 09/11/2008, 13h48

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