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 :

Recherche internet vba


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
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Par défaut Recherche internet vba
    Bonjour,

    Je suis débutant en VBA , je me suis donc aidé d'un tutoriel pour réaliser ma macro, mais je rencontre quand même des difficultés.

    Je souhaite à partir de Excel lancer une recherche d'itinéraire sur Mappy et en récupérer les informations (kilomètre, durée, essence).

    J'en suis pour l'instant à la premier étape, c'est à dire lancer la recherche. Ci-dessous mon code.

    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
    Sub WaitIE(IE As InternetExplorer)
    'On boucle tant que la page n'est pas totalement chargée
    Do Until IE.ReadyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    End Sub
     
     
    Sub RechercheVBAExcel()
     
    'Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputmappyZoneTexte As HTMLInputElement
    Dim InputmappyBouton As HTMLInputElement
    'Chargement d'une page Web Mappy
    IE.navigate "http://fr.mappy.com/itineraire#/1/M2/TItinerary/I/N151.12061,6.11309,2.32641,46.68697/Z3/"
     
    '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 de depart
    Set InputmappyZoneTexte = IEDoc.all("from")
     
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputmappyZoneTexte.Value = "Vaujours 93410"
     
    'On pointe notre Zone de texte d'arrivee
    Set InputmappyZoneTexte = IEDoc.all("to")
     
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputmappyZoneTexte.Value = "raincy 93340"
     
    'On pointe notre bouton
    Set InputmappyBouton = IEDoc.all("ItineraryFormView-itinerary-trigger")
     
    'On simule un clic
    InputmappyBouton .Click
     
    'On attend la fin de la recherche
    WaitIE IE
     
    'On libère les variables
    Set IE = Nothing
    Set IEDoc = Nothing
    End Sub

    En exécutant ce code la page internet s'ouvre bien mais aucune information n'est entrée dans les cases "départ" et "Arrivée" et la recherche ne se lance pas.

    Auriez vous une piste pour solutionner ce problème?

    Par avance merci!

    Cordialement,

    Matthieu.

  2. #2
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 583
    Par défaut
    Bonjour matthieu93410,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InputmappyBouton .Click
    enlève l'espace avant le .Click

    De plus, modifie ton code code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'On attend le chargement complet de la page
    WaitIE IE
    For i = 1 To 100000
    DoEvents
    Next
    c'est toujours le même problème. On veut utiliser des champs de page avant que cette même page ait finie d'être chargée. Le WaitIE ne fonctionne pas toujours correctement.

    Curt

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Par défaut
    Bonjour Curt,

    Tout d'abord merci pour ta réponse.

    Le problème était effectivement un problème de chargement de page, mais non pas lié à la fonction Wait IE mais à antivirus qui nécessitait d'autoriser l'accès à la page.

    Encore merci!

    Cordialement,

    Matthieu.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Par défaut
    Bonjour tout le monde.

    Ne pouvant pas récupérer les informations sur la distance, le temps... sur Mappy, en effet je ne trouve aucune référence "name" utilisable dans la zone où se trouve les résultat, je me suis tourné vers le site via Michelin.

    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
     
    Sub RechercheVBAExcel()
    Déclaration des variables
    Dim IE As New InternetExplorer
    Dim IEDoc As HTMLDocument
    Dim InputmichelinZoneTexte As HTMLInputElement
    Dim InputmichelinBouton As HTMLFormElement
     
     
       'Chargement d'une page Web michelin
       IE.navigate "http://www.viamichelin.fr/web/Itineraires"
     
       'Affichage de la fenêtre IE
       IE.Visible = True
     
      'On attend le chargement complet de la page
       WaitIE IE
     
       For i = 1 To 10
      DoEvents
       Next
          'On pointe le membre Document
       Set IEDoc = IE.document
     
      'On pointe notre Zone de texte de depart
       Set InputmichelinZoneTexte = IEDoc.all("strDepartureAddress")
     
     'On définit le texte que l'on souhaite placer à l'intérieur
       InputmichelinZoneTexte.Value = "Vaujours 93410"
     
       'On pointe notre Zone de texte d'arrivee
        Set InputmichelinZoneTexte = IEDoc.all("strArrivalAddress")
     
       'On définit le texte que l'on souhaite placer à l'intérieur
        InputmichelinZoneTexte.Value = "raincy 93340"
     
     
     'On pointe notre bouton
        Set InputmichelinBouton = IEDoc.forms("itiSearchZone")(0)
     
       'On simule un clic
        InputmichelinBouton.submit
     
     'On attend la fin de la recherche
        WaitIE IE
     
    'On libère les variables
       Set IE = Nothing
       Set IEDoc = Nothing
    End Sub

    Problème: il y a 2 boutons recherche dans la même zone "form". J'ai donc essayer de mettre un item pour sélectionner le 1er bouton.

    Au final la recherche ne se lance pas.

    Une idée?

    Par avance merci !!!

    Matthieu.

  5. #5
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 583
    Par défaut
    Bonsoir matthieu93410,

    remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set InputmichelinBouton = IEDoc.forms("itiSearchZone")(0)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set InputmichelinBouton = IEDoc.forms("itiSearchZone")(6)
    et remet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'On simule un clic
        InputmichelinBouton.Click
    et .... bonne route !!!!

    Curt

  6. #6
    Invité
    Invité(e)
    Par défaut bonjour, test ça
    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
     
    Sub RechercheVBAExcel()
    'Déclaration des variables
    Dim IE
    Dim IEDoc
    Dim InputmappyZoneTexte
    Dim InputmappyBouton
    'Chargement d'une page Web Mappy
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate "http://fr.mappy.com/itineraire#/1/M2/TItinerary/I/N151.12061,6.11309,2.32641,46.68697/Z3/"
     
    'Affichage de la fenêtre IE
    IE.Visible = True
     
    'On attend le chargement complet de la page
     Do While IE.Busy
           Application.Wait DateAdd("s", 10, Now)
        Loop
     
    'On pointe le membre Document
    Set IEDoc = IE.Document
     
    'On pointe notre Zone de texte de depart
    Set InputmappyZoneTexte = IEDoc.all("from")
     
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputmappyZoneTexte.Value = "Vaujours 93410"
     
    'On pointe notre Zone de texte d'arrivee
    Set InputmappyZoneTexte = IEDoc.all("to")
     
    'On définit le texte que l'on souhaite placer à l'intérieur
    InputmappyZoneTexte.Value = "raincy 93340"
     
    'On pointe notre bouton
    Set InputmappyBouton = IEDoc.all("ItineraryFormView-itinerary-trigger")
     
    'On simule un clic
    InputmappyBouton.Click
     
    'On attend la fin de la recherche
     Do While IE.Busy
           Application.Wait DateAdd("s", 10, Now)
    Loop
    'On libère les variables
    Set IE = Nothing
    Set IEDoc = Nothing
    End Sub
    Dernière modification par Invité ; 20/04/2013 à 00h13.

Discussions similaires

  1. Recherche Multi / VBA
    Par deuf86 dans le forum IHM
    Réponses: 6
    Dernier message: 24/07/2007, 11h02
  2. [VBA-E] Recherche en vba
    Par cety64 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2007, 01h56
  3. Recherche de moteur de recherche internet complet
    Par ReiVon dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 03/08/2006, 16h10
  4. [débutante] recherche multicritère vba
    Par Mimi64 dans le forum IHM
    Réponses: 7
    Dernier message: 01/08/2006, 10h57
  5. [Vba + Excel] requete rechercher en vba
    Par Emcy dans le forum Access
    Réponses: 2
    Dernier message: 14/11/2005, 10h38

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