Re bbil,
T est déclaré seulement comme cela:
et voici le bout de code dans lequel il apparaît:Dim T
Sinon "option explicit" je l'utilise à chaque fois sauf dans cette procédure pourquoi, plouf plouf je ne sais pas!!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For Each d In ColNbPartants.items t = Split(d, "id=")(UBound(Split(d, "id="))) If SplitNbPartants.exists(t) = False Then SplitNbPartants.Add t, t Next
Mais faut que je regarde la solution à rdurupt, qui devrait correspondre à mon attente
A bientôt
C exact, je te l'accorde
Merci pour ces réponses pertinentes
re
Pour répondre à bbil:
ca y est toutes mes variables sont déclarées....
Et revient vers vous et vos précieux conseils
A+
Bonjour le forum,
Et bonjour à tous les contributeurs de mon post,
D'après les conseils de bbil, que je remercie, mon code se comporte bien mieux et fonctionne également grâce à rdurupt en le simplifiant.
Maintenant comme vous pourrez le deviner je suis confronté à un autre problème, que je vais tenter de vous expliquer:
A la suite de ce code, réadapté à ma procédure N°1:
Voici ce que l'on récupère dans la collection "ColCourses":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 For Each OI In IECourses.document.Links vID = OI.href If vID Like "*resultats-et-rapports/course?id=*" Then 'T = Split(vID, "id=")(UBound(Split(vID, "id="))) ColCourses.Add vID, vID 'sans doublon 'ColIdC.Add T, T ColNbPartants.Add Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id="), _ Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id=") End If Next OI
- http://www.blabla/resultats-et-rapports/course?id=12345
- http://www.blabla/resultats-et-rapports/course?id=67891
- http://www.blabla/resultats-et-rapports/course?id=57831 etc...
Après un "Replace":
Voici ce que l'on obtient dans la collection "ColNbPartants":
- http://www.blabla/programmes-et-pron...ourse?id=12345
- http://www.blabla/programmes-et-pron...ourse?id=67891
- http://www.blabla/programmes-et-pron...ourse?id=57831 etc...
Dans les pages Web de la collection "ColCourses", je récupère certains éléments de chaque page de la collection par une boucle qui fonctionne en appelant une autre procédure N°2.
Maintenant ce que je n'arrive pas à écrire est que pour chaque liens de "ColCourses", il faut qu'en parallèle il scrute les liens de "ColNbPartants" ayant les mêmes "?id=" (ce qui correspond à la même course), afin qu'il compte le nombre de partants pour chaque courses et en fonction de cela je ne récupère pas les mêmes éléments.
Pour cette condition, je suis passé par un "Select case", qui fonctionne très bien, mais mon souci est de mettre en lien les deux collections pour qu'à chaque "Tour de boucle" de la procédure N°2, il récupère ce dont j'ai besoin dans les liens de la collection "ColNbPartants".
Humhum, you are capiche???
A bientôt
Bonjours,
je me doutais bien que nous allions aborder ce sujet, j'en ai pas parlé avant car il me paraissais important que tu comprennes les base du comment utiliser un collection!
maintenant parlons de la véritable utilité d'une collection.
une collection est une sorte de tableau, mais un tableau où on peut nommer chaque élément.
sheets(1).cells(1,2) = "toto" ça c'est un tableau je l'utilise en donnant les coordonnées ordinales!
Sheets("Feuil1").Range("A2") = "toto" là on affect la valeur toto en nomment les paramètres de la collection! voilà l'intérêt d'une collection;
un collection contient deux champ un champ valeur et un champ clé, c'est ce champ clé que l'on appel soit de façon ordinale soit par son nom!
dans le dernier code que je t'ai fourni, je donne au champ valeur et clé la même valeur, comme tu le faisais dans ton code originale!
Collection1.Add P.href,P.href maintenant si nous donnons comme clé le N° ID nous pouvons faire le lien entre les collections!
Collection1.Add P.href,T
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 For Each P In IEdocP.anchors If P.href Like "*programmes-et-pronostics/partants?id=*" Then t = Split((P.href, "id=")(UBound(Split((P.href "id="))) Collection1.Add P.href,T Collection2.Add T,T Collection3.Add Replace( P.href,"/partants?id=","/course?id="),T End If Next for I= 1 to Collection2.count UrlPartants = Collection1(Collection2(i)) UrlCourse = Collection3(Collection2(i)) next
Re,
Merci rdurupt pour les leçons que tu m'apportes dans mon apprentissage cela m'est vraiment utile.
Par contre j'aimerai que tu m'expliques cette boucle
Et j'aimerai t'apporter le bout de mon code pour que nous puissions parler de la même chose:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for I= 1 to Collection2.count UrlPartants = Collection1(Collection2(i)) UrlCourse = Collection3(Collection2(i))
Car ici comme tu peux le voir, c'est la partie du milieu de l'adresse et non ID comme au début du post car je me suis rendu compte que de récupérer les Id des partants ne me servait à rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 For Each OI In IECourses.document.Links vID = OI.href If vID Like "*resultats-et-rapports/course?id=*" Then T = Split(vID, "id=")(UBound(Split(vID, "id="))) ColCourses.Add vID, T ColIdC.Add T, T ColNbPartants.Add Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id="), T End If Next OI
Mais cela fonctionne pour moi, je bloque sur ce point que je vais expliquer:
Dans ColCourses je récup des liens
Dans une boucle je navigue sur ces liens et recup l'arrivée des courses et les rapports des jeux ---> ça c Ok
Sauf que si les partants sont inférieur à 8, la récup n'est pas la même que s'ils sont supérieur à 8
Donc de là je souhaite naviguer dans ColNbPartants car c'est dans ces liens que se trouve le Nb de partants, afin que pour chaque courses il regarde si <8 ou >8 (j'utilise un select case)
Et tous cela en parallèle car par la suite cela sera conditionné dans une Bdd.
JE pourrais fournir un fichier, mais je ne souhaite pas qu'il soit open-source mais seulement en MP.
A tchao, j'y retourne
Dans ColNbPartants
Bonjour,
dans le précédant post je t’expliquais qu'une collection possédait 2 champs! un champ valeur et un champs clé collection.add valeur, clé tu peux accéder au valeurs de cette collection par sa position ordinale ou par sa CléPar contre j'aimerai que tu m'expliques cette boucle
Code :Sélectionner tout - Visualiser dans une fenêtre à part
for I= 1 to Collection2.count
UrlPartants = Collection1(Collection2(i))
UrlCourse = Collection3(Collection2(i))
si tu défini la clé de la collection1 en utilisant la valeur e la collection2 et réciproquement, tu peux faire le lien entre la collection1 et la colection2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 collection.add 50, "toto" valeur = collection(1) ' valeur=50 valeur = collection("toto") 'valeur=50
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 valeur1 = collection1(1) 'position ordinale! valeur2 = colection2(valeur1) ' position par non de clé!dans cet exemple nous inversons les valeurs et les clé ! ainsi la valeur ColCourses devient la clé ColNbPartants et la valeur de ColNbPartants devient la clé de ColCourses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 For Each OI In IECourses.document.Links vID = OI.href If vID Like "*resultats-et-rapports/course?id=*" Then T = Split(vID, "id=")(UBound(Split(vID, "id="))) ColCourses.Add vID, Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id=") ColIdC.Add T, T ColNbPartants.Add Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id="), vID End If Next OI
il devient possible de connaitre la valeur de ColCourses en fonction de la valeur de ColNbPartants et réciproquement!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 UrlCours =ColCourses(1) urlColNbPartants =ColNbPartants(UrlCours) 'ou urlColNbPartants =ColNbPartants(1) UrlCours =ColCourses(urlColNbPartants )
Dernière modification par Invité ; 23/03/2015 à 09h44.
Salut à tous
et bonsoir Rdurupt,
Ouhaa, je t'accords que je suis largué là...
Je me trouve dans l'incapacité d'adapter ce code à ma procédure, je cherche, refait, retravaille mon code mais sans succès
je ne comprend pas la subtilité de la relation entre les collections mais surtout l'adaptation à mon Sub....
JE suis sûr que je ne suis pas loin de trouver la solution, je cherche sans relâche...
De la façon que j'ai adapté ce code, il compte le nombre de lien dans la collection, et non le nombre de lien (partants) dans la page web....
Je cherche encore avant de revenir vers toi....
EDIT:
Bon eh bien après recherche, mon sub récupérant les Nb de partants fonctionne mantenant, c'est cool, en fait j'avais omis une boucle qui scrute la collection Colnbpartants...donc j'arrive à récuperer le Nb de partants pour chaque course..
Dorénavant je vais mettre en lien les 2 collections afin que pour chaque lien de la collection ColCourses, il regarde chaque liens de la collection ColNbPartants et récupère le Nb de partants pour chaque lien de ColCourses...
A suivre
Merci pour ton aide
j'avais modifié le code du scan des url!
maintenant si tu pose le la partie qui pose problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 For Each OI In IECourses.document.Links vID = OI.href If vID Like "*resultats-et-rapports/course?id=*" Then ' T = Split(vID, "id=")(UBound(Split(vID, "id="))) ColCourses.Add vID, Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id=") ' ColIdC.Add T, T ColNbPartants.Add Replace(vID, "/resultats-et-rapports/course?id=", "/programmes-et-pronostics/course?id="), vID End If Next OI
je suis en phase avec toi, je l'avais déjà fait.
J'ai édité mon post précédent pour info.
SebEDIT:
Bon eh bien après recherche, mon sub récupérant les Nb de partants fonctionne mantenant, c'est cool, en fait j'avais omis une boucle qui scrute la collection Colnbpartants...donc j'arrive à récuperer le Nb de partants pour chaque course..
Dorénavant je vais mettre en lien les 2 collections afin que pour chaque lien de la collection ColCourses, il regarde chaque liens de la collection ColNbPartants et récupère le Nb de partants pour chaque lien de ColCourses...
A suivre
Bonjour le Forum,
Et surtout à tous les contributeurs de ce post qui m'ont apportés leur aide...
Spéciale dédicace à Rdurupt (soit dit en passant un drôle de pseudo )
De retour parmi vous avec un franc succès de mon côté, j'ai réussi avec l'histoire de mes collections, je passe le sujet en .
Mais je n'y serai pas arrivé sans vous...
Au prochain post de ma part et en espérant vous y retrouver...
A+
C'est mon père qui m'a donné ce pseudo à ma naissance!
Re,
Ouppps, j'imagine qu'il a une signification particulière!!!!
oui comme Durand, DuponT, DuponD en et plus breveté à l'état civile! Le R veut dire Robert!
Ok c'est du concret, merci de cette précision
Et ravi de savoir ton Prénom et de faire connaissance par le biais de ce post
Développeur.Net est ton métier j'imagine?
Au plaisir Robert
OUI
Ok, merci
A bientôt j'espère
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager