IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Extraire texte d'une collection [XL-2013]


Sujet :

Macros et VBA Excel

  1. #21
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Sebphyto Voir le message
    Re,
    Et bonjour bbil,

    La ligne causant le problème dans la deuxième procédure est celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vURLPartants = "http://www.programmes-et-pronostics/course?id=" & ColIdC(T)
    A+
    Tu ne réponds pas a ma question.. comment renseigne tu ton index T..
    Tu devrais rajouter la ligne option explicit en haut de toutes tes pages de codes ..j'ai l'impression que cela t'aiderais...

  2. #22
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    Re bbil,

    T est déclaré seulement comme cela:

    Dim T
    et voici le bout de code dans lequel il apparaît:

    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
    Sinon "option explicit" je l'utilise à chaque fois sauf dans cette procédure pourquoi, plouf plouf je ne sais pas!!!!!

    Mais faut que je regarde la solution à rdurupt, qui devrait correspondre à mon attente

    A bientôt

  3. #23
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Ok,

    mais c'est bien ce que je dis tu as oublié d'affecter une valeur à ton T ...


    Citation Envoyé par Sebphyto Voir le message
    Sinon "option explicit" je l'utilise à chaque fois sauf dans cette procédure pourquoi, plouf plouf je ne sais pas!!!!!
    ..
    et qu'attends tu pour rajouter cette ligne qui devrais être OBLIGATOIRE surtout pour les débutants ...

  4. #24
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    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+

  5. #25
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par Sebphyto Voir le message
    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+
    tu n'as pas fini de répondre .... relis les messages précédents je pense que t'y trouveras la solution..

  6. #26
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    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:
    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
    Voici ce que l'on récupère dans la collection "ColCourses":
    - 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

  7. #27
    Invité
    Invité(e)
    Par défaut
    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

  8. #28
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    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

    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))
    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
    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
    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.

    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

  9. #29
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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))
    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é
    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
    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
     valeur1 = collection1(1) 'position ordinale!
    valeur2 = colection2(valeur1) ' position par non de clé!
    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
    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.

    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.

  10. #30
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    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

  11. #31
    Invité
    Invité(e)
    Par défaut
    j'avais modifié le code du scan des url!
    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
    maintenant si tu pose le la partie qui pose problème

  12. #32
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    je suis en phase avec toi, je l'avais déjà fait.

    J'ai édité mon post précédent pour info.

    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
    Seb

  13. #33
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    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+

  14. #34
    Invité
    Invité(e)
    Par défaut
    C'est mon père qui m'a donné ce pseudo à ma naissance!

  15. #35
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    Re,

    Ouppps, j'imagine qu'il a une signification particulière!!!!

  16. #36
    Invité
    Invité(e)
    Par défaut
    oui comme Durand, DuponT, DuponD en et plus breveté à l'état civile! Le R veut dire Robert!

  17. #37
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    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

  18. #38
    Invité
    Invité(e)
    Par défaut
    OUI

  19. #39
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    Ok, merci

    A bientôt j'espère

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2007] Extraire texte d'une page HTML
    Par GuillaumeMorel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/06/2014, 15h09
  2. reduire la taille du text d'une collection
    Par john_wili dans le forum Struts 1
    Réponses: 4
    Dernier message: 28/02/2009, 15h52
  3. [RegEx] Extraire du texte d'une balise
    Par GouKen dans le forum Langage
    Réponses: 1
    Dernier message: 28/01/2008, 17h17
  4. Réponses: 3
    Dernier message: 19/10/2006, 16h46
  5. Réponses: 4
    Dernier message: 19/10/2006, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo