Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Arborescence IE VBA

R1-

XLDnaute Junior
Bonjour,

J'aimerai agir sur un contrôle sur un site internet en passant par internet explorer, ce contrôle n'a ni nom ni ID, mais grâce à une fenêtre espion j'ai pu retrouver sa position dans l'arborescence voici cette arborescence :

all(45).all(7).Children(9).Children(9).Children(1).Children(1).Children(1).Children(2).Children(1).Children(1).Children(1).Children(1).Children(7).Children(6).Children(1)

Voici le code :

VB:
Sub RechercheVBAExcel()

Dim IE As Object 'en Late Binding
Dim IEDoc As HTMLDocument
Dim HtmlElementStandard As HTMLGenericElement

    Set IE = CreateObject("internetexplorer.application") 'en Late Binding

    Set IE = CreateObject("internetexplorer.application")
    
    'Chargement d'une page Web
    LinkPath = "https://www.google.fr/maps/place/NEXANS+FRANCE+MEHUN+SUR+YEVRE+41+RUE+MAURICE+GORSE+18500"
    
    Application.Wait (Now + TimeValue("0:00:01"))
    
    IE.navigate LinkPath

    'Affichage de la fenêtre IE
    IE.Visible = True

    'Attente chargement
    
    'Do While IE.readyState = 4: DoEvents: Loop
    Do Until IE.readyState = 4: DoEvents: Loop

    'on pointe le membre du document
    Set IEDoc = IE.document
    
    Application.Wait (Now + TimeValue("0:00:01"))
    
    'on pointe notre zone de texte
        
        
    IE.document.all("searchbox-searchbutton").Click
    
    Set HtmlElementStandard = IEDoc.all(45).all(7).Children(9).Children(9).Children(1).Children(1).Children(1).Children(2).Children(1).Children(1).Children(1).Children(1).Children(7).Children(6).Children(1)
    
    Num_Tel= HtmlElementStandard.innerText
    
    'Attente la fin de chargement
    
    Do Until IE.readyState = 4: DoEvents: Loop
    
    'Permet de quitter la page web
     Set IE = Nothing
    Set IEDoc = Nothing

    
End Sub

Cependant je ne connait pas la syntaxe a respecter pour appeler ce contrôle.
Avez vous des idées ?
Merci d'avance pour votre aide
 
Solution
Ecoute de mon coté ceci fonctionne et récupère le N° de tél.
VB:
Sub RechercheVBAExcel()

Dim IE As Object 'en Late Binding
Dim IEDoc As HTMLDocument
' Dim HtmlElementStandard As HTMLGenericElement

    Set IE = CreateObject("internetexplorer.application") 'en Late Binding
    Set IE = CreateObject("internetexplorer.application")
  
    'Chargement d'une page Web
    LinkPath = "https://www.google.fr/maps/place/NEXANS+FRANCE+MEHUN+SUR+YEVRE+41+RUE+MAURICE+GORSE+18500"
    Application.Wait (Now + TimeValue("0:00:01"))
    IE.navigate LinkPath
    'Affichage de la fenêtre IE
    IE.Visible = True

    'Attente chargement
    'Do While IE.readyState = 4: DoEvents: Loop
    Do Until IE.readyState = 4: DoEvents: Loop

    'on pointe le membre...

Deadpool_CC

XLDnaute Accro
Bonjour,
je n'ai jamais fait ce genre de chose donc pas sur que j'ai une solution ...
Mais je pense qu'il faut être plus précis dans ta demande :
* tu entends quoi par "Agir sur ce controle" ? un click ? saisir une valeur dans un champ ?
* ce controle ... c'est quoi / quel type ?

Il serait bien que tu nous joigne en fichier texte joint le code HTML de la page en nous identifiant le controle en question.
A+
 

R1-

XLDnaute Junior
Bonjour, merci de vous intéresser à mon problème,

Mon contrôle est un élément de type "button" mon but est comme vous pouvez le voir dans le code de récupérer le "innerText" (un numéro de téléphone) et le stocker dans une variable, la variable nommée "Num_Tel".

Voici un Screenshot de ce que je veux récupérer dans l'arborescence :
voici un Screenshot du code html et le contrôle auxquels il correspond :


L'arborescence est trop longue et complexe pour que je puisse en prendre une photo.

J'aimerai ici savoir la syntaxe et/ou la procédure à suivre pour récupérer des sous éléments dans le code HTML.

Encore merci pour votre temps.
 

Deadpool_CC

XLDnaute Accro
j'ai essayer de copier ton code dans un fichier excel pour le tester mais j'ai des erreurs
tu peux nous joindre le fichier exemple car je pense qu'il me manque des déclarations
ps : tu te base sur IE ? tu sais qu'il est officiellement HS ?
 

R1-

XLDnaute Junior
Je me base effectivement sur IE, et c'est malheureusement ma seule solution, en effet, j'aurai aimé passer par chrome, mais je dois passer par les références Selenium, non disponible sur les ordinateurs de mon entreprise. Impossible aussi d'installer d'autres navigateurs avec les droits qui me sont accordés.

Voici par ailleurs les références activer :



Mon fichier est mis à pars ca complètement vide.
 

Deadpool_CC

XLDnaute Accro
Ecoute de mon coté ceci fonctionne et récupère le N° de tél.
VB:
Sub RechercheVBAExcel()

Dim IE As Object 'en Late Binding
Dim IEDoc As HTMLDocument
' Dim HtmlElementStandard As HTMLGenericElement

    Set IE = CreateObject("internetexplorer.application") 'en Late Binding
    Set IE = CreateObject("internetexplorer.application")
  
    'Chargement d'une page Web
    LinkPath = "https://www.google.fr/maps/place/NEXANS+FRANCE+MEHUN+SUR+YEVRE+41+RUE+MAURICE+GORSE+18500"
    Application.Wait (Now + TimeValue("0:00:01"))
    IE.navigate LinkPath
    'Affichage de la fenêtre IE
    IE.Visible = True

    'Attente chargement
    'Do While IE.readyState = 4: DoEvents: Loop
    Do Until IE.readyState = 4: DoEvents: Loop

    'on pointe le membre du document
    Set IEDoc = IE.document
    Application.Wait (Now + TimeValue("0:00:01"))

    'on pointe notre zone de texte
    IE.document.all("searchbox-searchbutton").Click
  

    'Set HtmlElementStandard = IEDoc.all(45).all(7).Children(9).Children(9).Children(1).Children(1).Children(1).Children(2).Children(1).Children(1).Children(1).Children(1).Children(7).Children(6).Children(1)
    'Num_tel = HtmlElementStandard.innerText

' --------- ici la solution qui remplace les 2 lignes commentées ci dessus  
    Num_tel = IEDoc.getElementsByClassName("Io6YTe").Item(2).innerText
' -------------------------------------------------------------------------------

    'Attente la fin de chargement
      Do Until IE.readyState = 4: DoEvents: Loop
    'Permet de quitter la page web
    Set IE = Nothing
    Set IEDoc = Nothing
 
End Sub

 
Dernière édition:

R1-

XLDnaute Junior
Merci beaucoup je vais tester ça en rentrant de vacances et je ferai une petite update avec le projet complètement terminé mais il n'y a pas de raison que ça ne marche pas.
En tout cas je peut partir en vacances la conscience tranquille, encore merci .

Bon week-end.
 

R1-

XLDnaute Junior
Bonjour,

Je reviens sur cette discussion pour la clôturer, la solution proposée si dessus est la bonne, cependant, si le contrôle se décale il peut arriver qu'une mauvaise information soit remontée (comme pour la ligne en rouge). Je vais donc continuer à chercher dans cette voie.
Vous trouverez en pièce jointe mon fichier complet, qui a pour but de scrapper des numéros de téléphone (ou autre) sur internet via google map en partant d'un fichier contenant des adresses. J'espère que ce fichier pourra être utile à d'autres personnes confrontées aux mêmes problèmes que moi.
Encore merci à toi @Deadpool_CC pour ton aide.
 

Pièces jointes

  • test recup num tel.xlsm
    33 KB · Affichages: 12
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…