Macro : récupérer des données d' une page web pour suivi de colis

dadxl

XLDnaute Nouveau
Bonsoir à tous,

Après plusieurs heures de recherches (notamment concernant les requêtes web) et avoir utilisé la fonction recherche du forum, je ne trouve pas de solution ou même de début de solution à ma problématique.

J'aimerais une macro qui récupère des données d'une page web. La macro devrait :

* copier le numéro de colis situé en colonne A du fichier exemple
* ouvrir le site internet de Colissimo (cette étape, je sais faire)
* coller le numéro de colis précédemment copié dans la barre de recherche du site colissimo
* valider la recherche
* copier le statut actuel du colis
* le coller dans en colonne G

Cette macro effectuerait ces opérations pour chacun des colis présent en colonne A.

Merci par avance de vos éclairages,


David
 

Pièces jointes

  • Fichier exemple.xlsm
    34.9 KB · Affichages: 120
  • Fichier exemple.xlsm
    34.9 KB · Affichages: 139
  • Fichier exemple.xlsm
    34.9 KB · Affichages: 137

david84

XLDnaute Barbatruc
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir,
ci-joint ce lien à étudier sans modération si tu veux arriver à tes fins.
Les réponses à tes questions s'y trouvent sûrement.
Tu as les explications et des exemples concrets que tu peux reproduire pour t'aguerrir.
Bonne suite
A+
 

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonjour,

Merci pour ce lien qui m'a été utile. Je ne bloque plus que sur deux étapes ; je reprends les étapes que la macro doit effectuer :

1/ copier le numéro de colis situé en colonne A du fichier exemple (cette étape, je sais faire)
2/ ouvrir le site internet de Colissimo (cette étape, je sais faire)
3/ coller le numéro de colis précédemment copié dans la barre de recherche du site Colissimo (cette étape, je sais faire)
4/ valider la recherche (cette étape, je sais faire)
5/ copier le statut actuel du colis (je ne sais pas faire)
6/ le coller dans en colonne G ((je ne sais pas faire mais je suis en mesure de le faire si l'étape 5 est débloquée)
7/ effectuer cette opération pour chacun des numéro de colis présent en colonne (l'étape la plus difficile selon moi sur laquelle je n'ai pas la moindre idée)

A toutes fins utiles, je joint de nouveau le fichier exemple mis à jour.

Toutes les pistes sont les bienvenues ; merci à vous tous par avance.

David
 

Pièces jointes

  • Fichier exemple mis à jour.xlsm
    37.7 KB · Affichages: 107
  • Fichier exemple mis à jour.xlsm
    37.7 KB · Affichages: 106
  • Fichier exemple mis à jour.xlsm
    37.7 KB · Affichages: 122

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bon, j'ai un peu avancé mais je n'obtiens pas le résultat souhaité pour l'instant mais je ne désespère pas.

Je rappelle les étapes que doit effectuer la macro de mise à jour :

1/ copier le numéro de colis situé en colonne A du fichier exemple (cette étape, je sais faire)
2/ ouvrir le site internet de Colissimo (cette étape, je sais faire)
3/ coller le numéro de colis précédemment copié dans la barre de recherche du site Colissimo (cette étape, je sais faire)
4/ valider la recherche (cette étape, je sais faire)
5/ copier le statut actuel du colis (je ne sais pas copier la bonne partie puisque le résultat en colonne G ne correspond pas au statut du colis)
6/ le coller dans en colonne G ((idem que l'étape 5)
7/ effectuer cette opération pour chacun des numéro de colis présent en colonne (l'étape la plus difficile selon moi sur laquelle je n'ai pas la moindre idée)

Si quelqu'un pouvait m'aiguiller pour résoudre les étapes 5,6 et 7 , je lui en serais très reconnaissant.

Je joint de nouveau le fichier exemple avec la macro mise à jour.
 

Pièces jointes

  • Fichier exemple mis à jour.xlsm
    42.6 KB · Affichages: 104
  • Fichier exemple mis à jour.xlsm
    42.6 KB · Affichages: 100
  • Fichier exemple mis à jour.xlsm
    42.6 KB · Affichages: 85

david84

XLDnaute Barbatruc
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir,
pour ramener le statut actuel du colis, il te faut créer 3 autres variables :
Code:
Dim TagCol As IHTMLElementCollection
Dim TagItem As IHTMLElement
Dim Statut As String
Puis, après InputColissimoBouton.Click tu dois pointer sur la collection des Tags qui se nomment "td" :
Code:
Set TagCol = IEDoc.getElementsByTagName("td")
Tu récupères ainsi cette collection.
Ensuite, quand tu recherches dans l'arborescence de cette collection, tu repères l'élément dans l'item 13. Tu pointes donc sur celui-ci :
Code:
Set TagItem = TagCol(12)
puis tu récupères sont texte grâce à la propriété InnerText :
Code:
Statut = TagItem.innerText
que tu places ensuite dans la cellule concernée
Code:
Cells(2, 7).Value = Statut
Pour pouvoir récupérer le statut de chaque cellule, il te faut encadrer ce traitement par une boucle For...Next par exemple
Code:
For i= 1 to Nbre de cellule
La procédure
Next
Je te laisse avancer de ton côté.
A+
 

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir,


Merci pour ces éléments. Je n'ai pu tester la solution avant n'ayant pas accès à l'internet en semaine.
La macro me retourne une erreur 91 "variable objet non définie"
La macro plante sur cette ligne : Statut = TagItem.innerText

Une petite idée ?
 

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir à David84 et aux autres,


Petit up.

Il semble que les données à récupérer soient imbriquées dans un tableau, ce qui provoque l'erreur 91.

Quand je tente de récupérer d'autres "items" (le 1 ou le 3 par exemple), cela fonctionne.


Quelqu'un voit une explication ? Je commence à désespérer ...
 

Mytå

XLDnaute Occasionnel
Re : Macro : récupérer des données d' une page web pour suivi de colis

Salut le forum

Réponse donnée sur un autre forum

Modifie la déclaration des variables
Code:
Dim TagCol As HTMLDivElement
La partie du code a modifier
Code:
    ' pointage sur la collection
   Set IEDoc = IE.Document
    Set TagCol = IEDoc.getElementById("resultatSuivreDiv")

    ' pointage sur l'item qui concerne le statut
   If TagCol.all.Item(1).innerText Like "Numéro de colis invalide*" Then
        Set TagItem = TagCol.all.Item(1)
    Else
        Set TagItem = TagCol.all.Item(14)
    End If
    
    ' définition du statut
   Statut = TagItem.innerText

Mytå
 

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir,

Merci pour cette réponse qui fonctionne lorsque le statut est indiqué par une chaine de caractère comme par exemple : "votre colis est livré".

En revanche, je m’aperçois que sur certains colis, le statut renvoie à une image (voir fichier ci-joint avec les nouveaux numéros de colis pour laquelle la macro ne fonctionne pas).

Avez-vous une idée pour copier une image ciblée d'une page html dans excel ?


Merci encore par avance pour votre précieuse aide,
 

Pièces jointes

  • Fichier exemple mis à jour.xlsm
    25.1 KB · Affichages: 96
  • Fichier exemple mis à jour.xlsm
    25.1 KB · Affichages: 91
  • Fichier exemple mis à jour.xlsm
    25.1 KB · Affichages: 96

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir,

Malgré de nombreuses recherches, je bloque sur ce projet (depuis 3 semaines).

Je joins mon fichier et une image montrant le code source de la page web sur laquelle j'agis à partir d'excel.

Je résume donc ma problématique : le statut des colis, dans le code source, renvoie parfois à une image.

Existe-il une solution permettant de pointer cette image et d'en récupérer son contenu ?


Merci par avance pour vos prochaines pistes :)
 

Pièces jointes

  • Fichier exemple mis à jour.xlsm
    25.8 KB · Affichages: 97
  • Fichier exemple mis à jour.xlsm
    25.8 KB · Affichages: 128
  • Fichier exemple mis à jour.xlsm
    25.8 KB · Affichages: 157
  • Code source.jpg
    Code source.jpg
    46.5 KB · Affichages: 171

david84

XLDnaute Barbatruc
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonsoir,
Malgré de nombreuses recherches, je bloque sur ce projet (depuis 3 semaines).
Je n'ai pas le temps de tester en détail (en plus chez moi la page met beaucoup de temps à se charger) mais il te suffisait d'ouvrir dans la fenêtre des variables locales l'objet IeDoc créé pour t'apercevoir que celui-ci contient quelques collections, dont celle des images.
Il te suffit ensuite de repérer celle que tu veux et de pointer dessus selon les techniques similaires à celles décrites dans le tutoriel que je t'ai indiqué.
A+
 

Mytå

XLDnaute Occasionnel
Re : Macro : récupérer des données d' une page web pour suivi de colis

Salut le forum

Dadxl, je t'ai donné une solution sur deux Forums le 13/01/2013.

Tu reviens seulement le 19/01/2013 pour dire merci et demander de l'aide à nouveau.

Sur l'autre Forum pas un soupçon de gratitude.

Bonne chance avec ton application,
tant qu'à moi tu vas rester bloqué
encore un bon bout de temps
avant que je t'aide de nouveau.

Mytå
 

dadxl

XLDnaute Nouveau
Re : Macro : récupérer des données d' une page web pour suivi de colis

Bonjour au forum, bonjour Myta,


Je ne suis revenu répondre que le 19/01, car comme indiqué dans mon message du 12/01, je n'ai accès à l'internet que le weekend . Désolé de ne pas posséder différents appareils me permettant de répondre sur le forum en semaine.

Quant à mon absence de réponse sur le second forum, j'avais tout simplement oublié que je m'y était inscrit.

Par ailleurs, il est possible de vérifier sur l'autre post que j'ai précédemment ouvert pour un autre projet sur ce forum, que je n'ai pas manqué de remercier le membre néné06 lorsque celui-ci m'a apporté son aide.
https://www.excel-downloads.com/thr...es-doublons-de-deux-plages-de-donnees.198465/

Concernant mon nouveau message du weekend dernier, j'ai bien pris note de tes solutions et t'en remercie une nouvelle fois, mais je bloque toujours sur ce projet.

Bref, merci tout de même au forum (que je n'importunerai plus) de ces différentes pistes.
Bonne continuation à tous.
dadxl
 

Discussions similaires

Réponses
12
Affichages
248

Statistiques des forums

Discussions
312 329
Messages
2 087 324
Membres
103 516
dernier inscrit
René Rivoli Monin