Récupération de données sur le web | ||
---|---|---|
Inscription: 01/11/2011
Messages:
9
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 01-11-2011 19h16
Bonjour à tous,
Tout nouveau sur votre site, j'espère y trouver l'aide que je recherche. J'ai créé un fichier excel recencant les séries de BDs que je suis. Mon tableau est assez simple (cf. PJ). On y trouve le nom de la série, le nombre de tome parus, les tomes qu'il me manque, le lien web de la fiche série sur le site www.BDThèque.com . Ce que je souhaiterai faire, c'est pointer automatiquement depuis la page web associée le nombre de tome parues (cases jaunes dans le fichier) et actualiser automatiquement la colonne à chaque ouverture du fichier, de façon à voir quelles sont les séries dont un nouveau tome est sorti. Par exemple, pour la série "La Licorne", aller récupérer à partir du lien de la page suivante: http://www.bdtheque.com/main.php?bdid=5348 l'information "Nb. tomes parus :", qui est ici "3" (au 1er nov 2011) et reporter cette info dans la case correspondante du fichier excel (ici la case C5). Cette info étant automatiquement vérifiée et mise à jour à chaque ouverture du fichier. Une fois cette info récupéré, je pourrai facilement vérifier quelles sont les nouveautés. J'ai essayé d'utiliser les requêtes web excel mais celle ci me donnent bcp trop d'infos (je peux récupérer un ensemble d'info depuis le lien web mais pas uniquement le nbre de tome). Et je ne sais pas comment faire via une autre méthode (peut être via le code source de la page mais je ne m'y connais pas assez). Existe-t-il une macro ou fonction simple et dupliquable aux autres séries permettant de faire cela, via les liens des pages web associées, pour chaque série (le fichier joint n'étant pas complet encore) ?? J'espère que vous pourrez m'apporter une solution à mon problème, en espérant avoir été suffisamment clair dans sa description. Vous remerciant par avance pour votre aide, bonne semaine à tous Fx |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 01-11-2011 21h15
Bonsoir fixsurfer, bienvenue sur XLpages.com
Peut-être une réponse possible à ton problème dans la pièce jointe... J'ai utilisé ce code VBA : Option Explicit En espérant t'avoir dépanné. Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 01/11/2011
Messages:
9
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 02-11-2011 13h39
Bonjour Didier,
Merci beaucoup pour cette réponse rapide et qui semble effectivement totalement répondre à ma demande. J'ai simplement 3 petites questions : - Je peux bien sans problème ajouter des nouvelles séries (ie: lignes) à mon tableau ?? J'ai fait le test et cela semble marcher mais je voulais m'en assurer. - Autre question, si je souhaite ajouter des colonnes avant celle contenant les liens web, quelle est la ligne de code que je dois modifier ?? Est ce bien celles-ci : With Sheets("www.mdf-xlpages.com") Les 6 (en rouge dans le code) étant le numéro de colonne (ici 6 pour F) ?? Il suffit par exemple de mettre 8 si je décale en colonne H mes liens web ?? Est ce bien ça ?? - Idem, si j'ai bien compris, je dois également démarrer ma liste à la ligne 5, ou modifier la ligne de code suivante : With Sheets("www.mdf-xlpages.com") En tout cas merci encore une fois, je ne pensais pas avoir une réponse aussi rapide. Fx |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 02-11-2011 16h39
Bonjour fixsurfer, le Forum,
Je pense que tu as tout compris C'est oui pour l'ensemble (le 6, le 5 et le 4), tu as visiblement bien analysé ce morceau de code. Bravo Par ailleurs, cette procédure tient compte du nombre d'Urls indiquées et s'adapte en fonction du nombre de ligne de ton tableau (il faut toutefois veiller à ne pas oublier l'Url pour chaque ligne existante sous peine de plantage non géré : pas de cellule vide isolée ou erreur d'Url dans cette colonne). Cela dit, la meilleure façon de procéder aurait été sans doute de tester par toi-même ces conclusions (qui étaient justes !). Décortiquer l'existant, modifier, tester, améliorer, c'est toujours le meilleur moyen d'apprendre par soi-même. Cordialement (merci de solder ce fil comme indiqué au bas de ma signature si tu penses le sujet clos). Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 01/11/2011
Messages:
9
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 02-11-2011 16h59
Merci beaucoup encore une fois.
J'ai effectivement fait des tests, mais bon, je préférais avoir vos confirmations (on ne sait jamais, des fois que sur un coup de chance ca marche alors que ca ne devrait pas ). Simplement, concernant votre nouvelle réponse, les "4" correspondent à "n°1ère ligne - 1" ou à autre chose ?? Et enfin, avant de solder le sujet, j'ai une dernière question. Comment avez-vous récupérer l'info demandée ?? Je m'explique, imaginons que je souhaite "améliorer" mon super fichier en récupérant via la même page ou une autre d'autres infos à l'avenir, quelle partie du code faut-il modifier et comment ?? Si je ne me trompe pas cela devrait être celle-ci : Loop Du coup, par exemple, pour récupérer l'info "dessinateur", faut-il remplacer le code ainsi seulement (en conservant le même emplacement de colonne pour que ce soit plus simple ?) ou bien faut-il faire autre chose ?? Loop Voilà, j'espère ne pas t'avoir trop soualé avec mes questions Promis, à la prochaine réponse, je solde le sujet. Encore une fois merci beaucoup, Cordialement, Fx |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 02-11-2011 18h17
Re fixsurfer,
Citation : fixsurfer a écrit : Citation : fixsurfer a écrit : Bon, tout d'abord on parle bien de l'expression chaîne "Nb. tomes parus :" (et non de "nb. tome parus" comme tu l'écris). Oui, je sais, je chipote, mais il n'y a pas d'aléatoire avec VBA (ou avec n'importe quel langage de développement d'ailleurs), tout doit être précis : la casse, l'orthographe... Maintenant, je décompose l'extrait de code : T = IE.Document.body.innerText L'objectif, c'est quoi ? On veut récupérer la valeur numérique suivant l'expression (exacte) "Nb. tomes parus :" Que faut-il faire ? D'abord, on va repérer où se situe cette expression dans l'ensemble du texte de la page (à partir de combien de caractères cette chaîne apparaît-elle ?) Pour ça, on utilise la fonction INSTR() (voir l'aide VBA sur cette fonction pour les détails) : NumCaractCible = InStr(NumCaractèreDeDépart, ChaineATraiter, ChaineARechercher) NumCaractCible = InStr(1, T, "Nb. tomes parus :") Toutefois ce qui nous intéresse, ce n'est pas cette chaine mais la valeur qui apparaît - après - cette chaine. Ainsi, on ajoute 17 à la valeur trouvée, puisque la chaîne "Nb. tomes parus :" contient elle-même 17 caractères : NumCaractCible = InStr(1, T, "Nb. tomes parus :") + 17 On isole (extrait) ensuite tous les caractères à partir de cette position grâce à la fonction MID(). Voir l'aide VBA pour le détail de cette fonction MID(). La nouvelle chaîne obtenue commence par la fameuse valeur (numérique) recherchée ( = le nombre de tomes tant convoité). Il ne reste donc plus qu'à isoler cette valeur numérique. Et pour ça, je simplifie l'opération en faisant appel à la fonction VAL() Voir l'aide VBA sur cette fonction pour comprendre cette dernière astuce. Voilà, je ne peux t'expliquer mieux ce bout de code Avec ces explications, l'aide VBA et un peu de travail d'investigation de ta part, tu as tout en main pour pouvoir t'en sortir pour le reste. Pour l'info "Dessinateur", la seule difficulté qu'il te restera à résoudre, c'est que la valeur souhaitée n'est plus numérique mais une valeur chaîne de caractères (ex: "Jean (Anthony)"). Il te faudra donc jouer d'astuce là encore, mais cette fois, je vais te laisser chercher un peu... Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 01/11/2011
Messages:
9
Système d'exploitation: PC Version Excel utilisée: 2007 |
Posté le : 03-11-2011 09h51
Eh bien merci beaucoup pour ces explications et votre aide précieuse.
Je solde donc comme promis le sujet et vais continuer à me cultiver sur le sujet. Encore merci. Cordialement, Fx |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 03/11/2011
Messages:
2
Système d'exploitation: PC Version Excel utilisée: excel 2000 |
Posté le : 03-11-2011 14h06
Bonjour,
Je reviens vers vous au sujet de la recuperation de données sur le web. Je suis en train de créer un fichier comparatif car pour le travail, je dois comparer tous les jours de nombreux produits. Pour cela, je compare chez icomparateur mais je n'arrive pas à récupérer le PRIX TTC. J'ai modifié le code initial mais j'aimerais qu'il m'indique le PRIX D'ACHAT TTC avec 2 chiffres après la virgule. Le fichier me récupère bien le PRIX HORS TAXE et les FRAIS DE PORT : Dim vUrl As String, T As String Dim L As Long, Lmax As Long Application.ScreenUpdating = False Set IE = CreateObject("internetExplorer.Application") 'afficher IE IE.Visible = True With Sheets("www.i-comparateur.com") 'ici : 6 =F Lmax = .Cells(.Rows.Count, 6).End(xlUp).Row 'debut de la ligne : ici ligne 5 For L = 5 To Lmax Application.StatusBar = (L - 4) * 100 \ (Lmax - 4) & "%... " & .Cells(L, 2).Text 'URL 'ici : 6 =F vUrl = .Cells(L, 6).Text 'Ouvre la page web dans IE de façon invisible IE.Navigate vUrl Do Until IE.ReadyState = READYSTATE_COMPLETE DoEvents Loop T = IE.Document.body.innerText 'PRIX D'ACHAT .Cells(L, 3).Value = Val(Mid(T, InStr(1, T, "En stock") + 8)) 'FRAIS DE PORT .Cells(L, 4).Value = Val(Mid(T, InStr(1, T, "+ port : ") + 9)) Next L End With 'Quitter IE IE.Quit Set IE = Nothing Application.StatusBar = False Application.ScreenUpdating = True MsgBox "Mise à jour effectuée !", vbInformation + vbOKOnly End Sub mais j'aimerais savoir si dans le code on pourrait récupérer le TTC sachant qu'en plus le produit n'est pas toujours "en stock" j'ai pensé à récupérer le FRAIS DE PORT, à faire ensuite un NBCAR pour avoir le nombre de lettres et à récupérer le texte après les frais de port mais ça ne fonctionne pas. je ne vois pas d'autres solutions à mon problème, pouvez vous m'aider s'il vous plait car je n'avance pas et je gagnerais énormément de temps? je vous joint en pièce jointe mon fichier. en beaucoup moins urgent, j'ai 2 autres petites questions, voir si c'est possible ou non : - avons nous également la possibilité de remonter le NOM DU SITE où le produit est le moins cher? - Pouvons nous faire cette extraction pour les 3 premiers sites ou c'est trop complexe? Cordialement. Eideal44 |
|
|
Re: Récupération de données sur le web | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 04-11-2011 11h33
Bonjour eideal4, et bienvenue sur XLpages.com
Prière de créer ton propre sujet dans le forum STP, en faisant au besoin référence à celui-ci (par un lien) si tu le souhaites. Pour rappel, le présent sujet est soldé et considéré comme résolu. Par ailleurs, merci aussi de consulter cette FAQ pour insérer du code VBA proprement dans tes posts (et de lire la FAQ dédiée au site et forum XLpages.com en général). Cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
Qui consulte actuellement ce sujet ?
1 Utilisateur(s) anonymes