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 :

Récuperer les adresses commencant par une même chaine


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut Récuperer les adresses commencant par une même chaine
    Bonjour,
    Quelqu'un connaitrait-il une fonction permettant de remplir une listbox avec toutes les adresses internet commençant par une même chaine de caractères?
    Merci d'avance

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Citation Envoyé par nicht Voir le message
    remplir une listbox avec toutes les adresses internet commençant par une même chaine de caractères
    J'espère que ta chaine de caractère n'est pas "http://" car la tu risque de concurrencer google.

    Tes adresses tu les récupère ou? elle sont stocké quelque part? sous quel forme? Un peu de précision pourrais être utile

    Sinon voici quelque tuto qui pourrais t'être utile
    (je te met directement le lien vers la partie qui a mon avis te sera la plus utile)

    Manipuler une chaine de carctère extraire la partie gauche

    Utiliser les listbox


    Part de ca essaye de commencer ton code et si ca coince viens nous voir
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Bonjour Krovax,
    Mon problème n'est pas de remplir la listbox ni de connaitre la chaine de commencement mais de récupérer les adresses commencant par exemple par "http://www.developpez.net/forums/" et aynt autre chose après le /.
    1) je ne sais pas du tout où récupérer les adresses
    2) pareil
    3) j'en sais pas plus
    (A moins que c'est parce que j'ai pas compris ta question)
    Sinon c'est a peu près le principe de google sauf que je veux seulement des adresses et non pas le contenu.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    salut,
    en fait la question est : d'où sors-tu la liste d'adresse ? où se situe le chapeau magique ?
    une fois qu'on saura cela, on pourra commencer à te donner d'autres pistes, mais tant qu'on est dans le brouillard, tu ne pourras pas nous trouver
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Salut,
    Ben voilà, on y arrive!
    C'est justement ça la question que je me pose!!

  6. #6
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Attend laisse moi comprendre tu veux un code qui vas chercher toutes les adresse qui commence d'une certaine facon?
    A mon avis le plus simple c'est de demander a google s'il accepte de te donner un acces direct a leur base de donnée. (google ou un autre moteur de recherche)
    Sinon tu peux tacheter quelque ordinateur que tu chargera de récupérer des adresse internet. C'est quoi ton budget?

    Tu te rend compte de ce que tu demande? Une liste de toutes les adresse qui existe.
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    C'est un peu le principe des aspirateur de site, il te faut a partir d'une page, faire la liste de toute les pages qui peuvent être appelé, puis appeler une a une toutes ces pages et regarder a quelles autres pages elle font elles même référence et .... bon je vais m'arrêter la, mais toi tu dois continuer .... jusqu'au final ou tu tomberas, soit sur une page qui ne fait référence a aucune autre page ou uniquement a des pages que tu auras deja mémorisé ou uniquement a des lien vers des site extérieur qui ne commence plus par htt:\\www.dev.com\.
    Intéresses toi au composant web utilisable sous vba, google devrait te servir.
    Si tu rencontres des problèmes précis n'hésite pas a faire appelle a nous
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Merci qwazerty,
    Mon premier problème: je ne sais pas du tout commencer!!

  9. #9
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    "vba excel lire le contenue d'une page web wininet", je peux pas te mettre de lien il sera effacé, mais c'est le 2eme site proposé par google

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Bonjour,
    Il permet seulement de télécharger une page connue et non pas n'importe laquelle.
    J' ai bien essayé de modifier avec like* mais je crois qu'on ne peut pas de cette façon.

  11. #11
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Heu la je comprend plus, tu vas pas partir du néant ?? tu as bien une pages de départ, si ça n'est pas le cas, relis les messages plus haut qui proposé de demander a google l'accès a leur base de données.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    salut,
    Je veux simplement une liste des pages commencant par exemple par "http://www.developpez.net/forums/d751525/logiciels/microsoft-office/excel/vba-excel/recuperer-adresses-commencant-meme-chaine/", quelque soit ce qu'il y a après.
    C'est donc impossible??
    Merci quand même
    nicht

  13. #13
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Écoutes relit le 1er post, ou je t'explique une méthode pour y arriver.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    salut,
    Citation Envoyé par Qwazerty Voir le message
    il te faut a partir d'une page, faire la liste de toute les pages qui peuvent être appelé, puis appeler une a une toutes ces pages et regarder a quelles autres pages elle font elles même référence et
    Qwaz
    J'ai déjà un début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim htmlpage As HTMLDocument
    Dim ie As New InternetExplorer
     Dim mapage As HTMLLinkElement
    Dim winshell As New ShellWindows
     
     Sub s()
    For Each ie In winshell
    If ie.LocationURL <> "" Then
    Set htmlpage = ie.document
    For Each mapage In htmlpage.links
    UserForm1.ListBox1.AddItem (mapage.toString)
     
     
     
    Next
    End If
    Next
     
    End Sub
    c'est de ca que tu voulais parler non?
    Je pense qu'il faut ensuiter ouvrir chacune de ces pages et regarder encore les liens qu'elles contiennent et ainsi de suite, seulement si cxeux de la liste commencent par la chaine recherchée ;
    Nicht

  15. #15
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    je suis loin d'être doué dans la manipulation de internet explorer par macro mais essaye de tester le début de ton lien voir si ca corespond a ce que tu cherche et de le mettre dans ta list seulement si cela colle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each mapage In htmlpage.links
    if left(mapage.toString,X)="htt://tondébutdechaine" then  
    'remplace X par le nombre de caractère qui constitue le début de ta chaine
    UserForm1.ListBox1.AddItem (mapage.toString)
    end if
     
     
    Next
    Ps : je suis partie du principe que ton code été bon
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  16. #16
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut
    Je ne connais pas du tout les manip avec ie, donc a toi de voir si les adresses que te retourne ton code te corresponde, comme l'a dis Krovax, je rajouterais juste qu'il te faut faire une fonction récursive (si tu ne vois pas ce que c'est, je suis sur que google t'apportera réponse) en gros tu fait appelles a une fonction qui dans le code de cette fonction se fait appelle a elle même. Donc en gros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function RechercheSousLien(LienDeDepart as string, Critere As string)
    [...] 'Tu crées la liste des lien contenu dans ta page de départ (LienDeDepart)
    ListeDeLienRetour = ListeDeLien 'il faudra gérer un tableau, l'égalité ne se fera pas comme ça
    for each TheLien In ListeDeLien
       ListeDeLienRetour = ListeDeLien +  RechercheSousLien(TheLien,Critere) 
    Next
    RechercheSousLien = ListeDeLienRetour
    J'ai simplifié, c'est du littéral il te faudra gérer des tableau (ListeDeLien et ListeDeLienRetour), ce qui veut dire qu'il faudra dimensionner tes tableaux, je te conseil de lire des Tutos sur la gestion des Tableau et sur le retour d'un tableau par une function, il me semble que tu trouveras ton bonheur sur developpez.com.
    Bon courage dans ton entreprise.

    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  17. #17
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Je pense que je vais contredire Qwaz (que je salut bien bas) pour la fonction récursive, cela va dépendre du nombre possible de lien. Car on risque de l'appeler un très grand nombre de fois et donc da saturer la mémoire. Et comme se plaisais a le dire mon prof d'algo "toutes fonction récursive peut être remplacé par de jolie boucle for" (enfin la fin c'est pas tout a fait ca)
    Mais bon si le nombre de lien est limité y aura pas de problème avec le récursif
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  18. #18
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut Krovax,
    J'avoue ne pas me rendre bien compte de la gourmandise d'une telle boucle, certes je le conçoit , puisque pour l'appréhender il suffit de s'imaginer piégé entre 2 miroirs, mais au niveau de ma reserve de memoire je ne sais pas, il faudrait tester, Nicht nous dira ca .
    Par contre pour le remplacement par des boucles, je ne sais pas trop, comment ne pas se limiter dans la recherche en profondeur?
    Page de depart, on boucle sur les differents liens contenus, mais apres? mettre la boucle dans une boucle Do Loop? mais alors est ce que ca ne revient pas au meme que la recursivité? Sans doute pas l'utilisation d'un boucle est surement moins gourmande que l'utilisation d'une fonction complete.
    A suivre ^^
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  19. #19
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    C'est par pour rien que mon prof me le disait si souvent je pense très facilement au récursif moi aussi. Et dans ce genre de cas j'ai tendance a mettre un goto foireux quelque part. Je vais donc laisser quelqu'un d'autre répondre a cette question , parce que moi je seche.

    A si une idée on boucle sur tous les lien de la première page et on stock la valeur dans la liste, puis on ouvre le deuxième lien et on récupère les lien contenue dans page. puis on ouvre le 3 ème lien de la liste,.....
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Salut à vous deux,
    1) N'allez pas trop vite, pour l'instant je travaille sur du code pour empêcher, comme vous me l'avez conseillé, que deux liens s'inscrivent deux fois dans la liste: j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    For Each ie In winshell
    If ie.LocationURL <> "" Then
    Set htmlpage = ie.document
    Set htmlpage = ie.document
    For Each mapage In htmlpage.links
    If Left(mapage.toString, 28) = "http://machaine/" Then
    'For i = 0 To UserForm1.ListBox1.ListCount - 1 'ceci ne marche pas
    'If Not mapage.toString = UserForm1.ListBox1.List(i) Then
    UserForm1.ListBox1.AddItem (mapage.toString)
    'Else
    'End If
    'End If
    'Next
    'Next
    End If
    Next
     
    End If
    Next
    2) Pour la suite j' avais pensé à ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub t()
    For i = 0 To UserForm1.ListBox1.ListCount - 1
     
    ie.navigate (UserForm1.ListBox1.List(i))
    If ie.LocationURL <> "" Then
    Set htmlpage = ie.document
    'remplace X par le nombre de caractère qui constitue le début de ta chaine
    Set htmlpage = ie.document
    For Each mapage In htmlpage.links
    If Left(mapage.toString, 28) = "http://machaine/" Then
    UserForm1.ListBox1.AddItem (mapage.toString)
    End If
     
    Next
    End If
    Next
     
    End Sub
    ... mais ça me fait une erreur (ce qui n'est peut être pas étonnant si j'ai de adresses identiques à la suite dans ma liste ("en cours d'utilisation")).
    Vous, vous êtes des experts, moi pas et tout ce que vous dites là me paraît un peu compliqué, mais bon, j'essaierai quand même

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/07/2009, 17h45
  2. Récuperer div dont l'id se termine par une certaine chaine
    Par Kimado dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/04/2008, 16h20
  3. capturer les packets envoyé par une adresse ip
    Par edzodzinam dans le forum Réseau
    Réponses: 1
    Dernier message: 20/03/2008, 22h06
  4. Réponses: 3
    Dernier message: 10/12/2007, 23h28
  5. Réponses: 3
    Dernier message: 07/11/2007, 09h55

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