Boucle pour extraire du contenu Cotes Paris Sportifs
Bonjour à tous,
Éternel débutant sur Excel je décide de me compliquer la tâche et commence à apprendre le VBA. J'avance doucement sur mon petit fichier, j'ai réalisé un premier trie avec l'aide de bouts de code trouvés par ci par là, qui m'ont permis d'extraire du code source les références de chaque match et qui se retrouvent donc en colonne A(voir image). Pour le 2ème trie, j'aimerais faire de la même façon que le premier sauf que je n'arrive pas à gérer toute une série de lien, j'ai cru voir qu'il fallait passer une boucle mais je suis complètement perdu, je joins une capture du tableau et le code qui fonctionne avec la cellule "A10" pour l'exemple.
Si quelqu'un a une solution?
Merci beaucoup!
Sub BrutUrlMatchs()
Application.ScreenUpdating = False
Dim UrlVariable As Long
Sheets("Ref Match").Select
Range("a10").Value = UrlVariable ' extraire un par un de la ligne 2 à la dernière ligne du tableau
codehtml = htmlCodePage("URL" & UrlVariable)
Sheets("BrutUrlMatchs").Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("a1") = codehtml
Range("b1") = Date
Sheets("Liste").Select
End SubBonjour,
Voici un essai d'adaptation :
Sub BrutUrlMatchs()
Dim UrlVariable As Long
Application.ScreenUpdating = False
with Sheets("Ref Match")
dl = .cells(.rows.count, 1).end(xlup).row
for i = 2 to dl
.Range("a" & i).Value = UrlVariable ' extraire un par un de la ligne 2 à la dernière ligne du tableau
codehtml = htmlCodePage("URL" & UrlVariable)
with Sheets("BrutUrlMatchs")
.Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Range("a1") = codehtml
.Range("b1") = Date
end with
next i
end with
Sheets("Liste").activate
application.screenupdating = true
End SubOn cherche d'abord la dernière ligne en colonne A de Ref Match. De la ligne 2 à la dernière (non vide), on réalise l'opération précédemment réalisée pour A10 seulement.
A noter qu'il y a des alternatives pour augmenter la vitesse d'exécution...
Cdlt,
Bonjour,
merci beaucoup pour ta réponse, alors ça fait bien la boucle mais le soucis est qu'après avoir lancer la macro ça me remplace toute les valeurs de la colonne par 0 (voir Screen)(J'ai essayé avec toutes les colonnes), du coup dans mes extractions au lieu de me retrouver avec les codes HTML des pages ça me renvoie simplement une valeur -1. J'ai aussi ajouter une colonne avec la date, est-ce possible de lancer la boucle uniquement sur la date du jour?
En vous remerciant
Bonjour,
Sans fichier ni explications claires, c'est vraiment difficile à dire...
Pour les 0, je pense que c'est parce que je me suis basé sur votre code où UrlVariable n'est pas initialisée.
Voici un nouvel essai en supposant que vous avez 2 tableaux structurés nommés ref et brut (pour l'exemple, noms à adapter), en mettant la date du jour dans la colonne 1 de ref et en collant les données à la suite de celles de brut :
Sub BrutUrlMatchs()
Dim t(), UrlVariable&
with range("ref")
.columns(1).value = Date
redim t(1 to .rows.count, 1 to 2)
for i = 1 to ubound(t)
UrlVariable = .cells(i, 2).value
codehtml = htmlCodePage("URL" & UrlVariable)
t(i, 1) = codehtml
t(i, 2) = .cells(i, 1).value 'Date
next i
end with
with range("brut")
nvl = .rows.count - application.countblank(.columns(1)) + 1
.cells(nvl, 1).resize(ubound(t), 2) = t
end with
Sheets("Liste").activate
End SubCdlt,
Re,
Tout d'abord un grand merci pour vos réponses! Je vous joins le tableau.
Donc dans le module 1 (qui a l'air de fonctionner), l'URL reste fixe et la destination du code HTML brut est la page "BrutUrlBase".
De là je passe par Power Query pour extraire mes références de matchs du Python et qui sont rangées dans le tableau "trie_num_pari" de la page "Ref Match".
C'est là qu'intervient le module 2 et la boucle, qui doivent extraire chaque lien du jour en destination de la page "BrutUrlMatchs" et là je repasserai par Power Query pour extraire les infos dont j'ai besoin.
Je précise que ces 2 modules seront lancés à partir du bouton de la page "BTTS".
J'imagine que ce n'est pas la façon la plus optimisée pour faire ça mais étant donné mon maigre niveau j'en suis déjà satisfait
J'espère que j'ai rien oublié et encore merci!
Re,
Avez-vous essayé le code au moins (en renommant vos tableaux ou en modifiant les noms des tableaux de Ref Match et Bruturlbase - dans le code) ?
Je dois avouer que, pour l'instant, je ne compte pas faire d'essai avec votre fichier
La seule chose qui m'étonne, c'est de passer par des variables alors que les liens complets sont en colonne 4 déjà.
Cdlt,
Oui je l'ai essayé ce matin ça ne fonctionnait pas, là j'ai l'impression que ça fonctionne mais que winamax bloque l'accès est-ce que c'est possible?
Si je le lance une fois ça fonctionne jusqu'à la 40ème référence (sur presque 500) et lorsque je relance j'ai que des -1, et en lançant un vpn ça refonctionne à nouveau pour une seule fois encore et pareil jusqu'à 40 lignes.
Oui pour les variables je me suis un peu mélangé les pinceaux à force de me perdre dans ces codes où je ne comprends pas grand chose, je remettrai ça au propre si j'arrive à le faire fonctionner.
Encore merci pour votre temps
EDIT : j'avais trouvé un code qui m'enregistrait toutes les pages en .txt c'était parfait mais lors de l'importation par dossier dans Power Query il affichait pas les codes sources mais faisait comme si c'était des pages en Json avec aucune donnée.
Franchement, je n'en sais rien... J'ai répondu surtout pour traiter le problème de la boucle car je ne fais d'extraction internet et n'ai jamais utilisé la fonction htmlcodepage.
C'est peut-être une sécurité du site ou un problème de lien inexistant (-1 est le résultat en cas d'erreur si j'ai bien saisi).
Pareil, je ne connais pas powerquery
En tout cas, voici le code réadapté :
Sub BrutUrlMatchs()
with range("ref")
.columns(1).value = Date
t = .columns(4)
for i = 1 to ubound(t)
t(i, 1) = htmlCodePage(t(i, 1))
next i
end with
with range("brut")
nvl = .rows.count - application.countblank(.columns(1)) + 1
.cells(nvl, 1).resize(ubound(t)) = t
.cells(nvl, 2).resize(ubound(t)) = Date
end with
Sheets("Liste").activate
End SubMais pour vos blocages, je me sens un peu limité...
Edit : Et LeBrochet, c'est un drôle de pseudo pour un utilisateur de Winamax
Cdlt,
Oui je pense qu'il y a un blocage dès que je reviens sur leur page ça m'affiche page en maintenance. Dommage ça aurait pu marcher.
C'est grâce (ou à cause?) de ces poissons que je me suis lancé sur Excel
Un énorme merci quand même d'avoir pris le temps de regarder.
"Grâce" ! Excel, c'est génial, c'est toujours bénéfique ! On dirait que ta découverte d'Excel cache une anecdote passionnante !
Je t'en prie ! Désolé de ne pas pouvoir faire plus
Bonne journée,