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 :

Recherche Web et importation de fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Par défaut Recherche Web et importation de fichier
    Bonjour,

    Je suis débutant en VBA et pour des raisons d'entreprises j'aurai besoin de créer une macro

    J'ai enregistrer une macro mais malheureusement ca ne fonctionne pas du tout comme je le souhaite et je ne comprend rien au codage même si j'essaie de m'y mettre ce que je veux faire a l'air très compliqué

    Je m'explique:

    Dans la colonne A de mon fichier se trouve une liste de lien vers le site société.com les liens sont par exemple:
    https://www.societe.com/cgi-bin/sear...ade+Patrimoine

    Je voudrais mettre en place une Macro qui irait sur le lien, ouvrirait la page correspondante au premier résultat exact ou a défaut le premier résultat tout court de la recherche et irait extraire le chiffre d'affaire dans la page de l’entreprise (la phrase qui présente le chiffre d'affaire est 100% du temps: "Sur l'année X elle réalise un chiffre d'affaires de Y" avec seulement X et Y qui varie) puis collerait cette petite phrase dans la cellule à coté du lien dans la colonne A.

    Je vous invite à jeter un oeil sur le lien que j'ai mis ca vous aidera a comprendre je pense

    J'ai essayé d'enregistrer la macro mais le problème c'est que je veux que l'opération se répète pour toutes les lignes non vides de la colonne A à ce jour cela va jusqu'à 357 et la je ne sais pas non plus comment faire.

    J'ai vraiment besoin d'aide

    Je vous remercie par avance chers développeurs en espérant que ce que je demande ne relève pas de l'impossible

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    tu a tenté quoi comme code ???

    je me demande bien ce que tu a pu enregistrer comme code sachant que tes lien envoie dans le moteur de recherche de société.com
    et que pour chopper les données de l'entreprise il faut cliquer sur un des choix donc redirection de locationURL
    et ca n'est qu'a ce moment la que l'on peut chopper les données
    je viens de le faire j'attend simplement que tu nous montre ce que toi tu a tenté

    je me sens obligé de fonctionner comme ca beaucoup trop d'étudiants viennent chercher du tout cuit

    Nom : demo2.gif
Affichages : 188
Taille : 180,0 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Par défaut
    Merci pour votre réponse si rapide,

    Voici la macro que j'ai enregistré pour une autre entreprise

    Je comprend tout à fait la démarche, par contre je ne suis plus étudiant je travaille dans une entreprise en tant que commercial et VBA n'est vraiment pas un outil requis dans ma profession cependant c'est tellement pratique lorsqu'on le maîtrise que j'essaie de m'y mettre malgré mon retard

    Mieux vaut tard que jamais haha

    La macro est une macro enregistré je n'ai pas créé de code c'est la seule chose que je sais faire avec VBA "enregistrer" et comme je vous l'ai dit quand je la duplique ca ne fonctionne plus pour les autres lignes car je dois reproduire cette opération pour chaque lien de la colonne A

    Bien à vous,


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Macro5()
    '
    ' Macro5 Macro
    '
     
        Range("I1").Select
        ActiveCell.FormulaR1C1 = _
            "https://www.societe.com/cgi-bin/search?champs=A2+NET+CONSEILS+++"
        Range("J1").Select
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;https://www.societe.com/societe/a2-net-conseils-524199791.html", _
            Destination:=Range("$A$1"))
            .Name = "a2-net-conseils-524199791"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlEntirePage
            .WebFormatting = xlWebFormattingNone
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
     
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et oui je m'y attendais
    les lien que tu a sont des lien vers le moteur de recherche et non ceux des lien de l'entreprise
    je ne sais pas (je vais le faire) ce que tu peux obtenir avec l e querytable avec ces liens mais en tout cas pas ce que tu cherche
    il y a redirection sur la page web donc au mieu avec ton querytable si tu peux récupérer le lien de l'entreprise et renvoyer une seconde requête querytable
    sinon tu sera obligé de passer par la navigation IE

    je vais vérifier querytable

    popur bien expliquer ce que j'essaie de te faire comprendre

    le lien que tu a donné au départ
    https://www.societe.com/cgi-bin/sear...ade+Patrimoine

    il faut aller chercher dans ce lien de depart le lien de l'entreprise ci dessous
    https://www.societe.com/societe/hour...046580049.html


    EDIT:
    c'est bien ce que je pensais tu peux oublier querytable
    la construction de la page de proposition d'entreprise se fait dans des balises script, tu ne peux donc même pas récupérer le(s) lien(s) avec le résultat de querytable

    j'ait pas essayer une requête avec un Object xlmlhttp mais avec IE en naviguant deux fois on y arrive
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Par défaut
    J'ai bien compris malheureusement je ne sais vraiment comment faire car même en essayant de reconstituer le lien direct vers la page de l'entreprise c'est impossible car ce dernier se constitue du numéro SIRET. Et en plus je ne sais pas extraire une phrase sur toutes une page Web avec l'application import data from web je crois que c'est impossible d'ailleurs. Alors si en plus de tout ça j'ajoute la répétition de l'opération pour l'ensemble des cellules non vides de la colonne A je suis pas dans la ***** haha

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    Bon querytable tu peut oublier ca c'est sur ca t'apporte rien

    j'explique comment avec internet explorer(IE)


    une petite sub d'abords pour appeler ma petite fonction
    cette sub dit: la cells(1,2) reçoit la valeur de ma fonction chiffre_d_affaire du lien de la cells(1,1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test2()
    Cells(1, 2) = chiffre_d_affaire(Cells(1, 1).Value)
    End Sub
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    ma fonction 
    Function chiffre_d_affaire(link)
     
       Dim NewLink$, elem As Object, I&, resultat$' variable nécessaire 
       resultat = "no found!!"'resultat est mis a "not found "au départ 
     
         With CreateObject("internetexplorer.application")' on créé un object internet.application en anonyme
            '.Visible = True 'FACULTATIF!!!!!!!!!!!!' tu la rend visible ou pas comme tu veux 
            .navigate link' on va sur la page du lien injecté (link)
            Do: DoEvents: Loop While .readystate <> 4' on attend le chargement de la page 
            NewLink = ""'on met newlink a vide pour le moment 
            For Each elem In .document.all' on cherche dans tout le document de la page web les element de classe ""txt-no-underline" et on prend le PREMIER!!!!
                If elem.classname = "txt-no-underline" Then NewLink = elem.href: Exit For
            Next
            If NewLink <> "" Then'si dans la boucle on a trouvé alors 
                Debug.Print NewLink
                .navigate NewLink' on renavigue IE vers le lien que l'on a trouvé 
                Do: DoEvents: Loop While .readystate <> 4 Or .busy' on attend le chargement de la page 
                For Each elem In .document.all'on cherche la phrase que t'intéresse (les phrases sont des element de classe "littletext2" et toi c'est le 2d que tu veux 
                    If elem.classname = "littletext2" Then
                        I = I + 1
                        If I = 2 Then resultat = elem.innertext: Exit For
                    End If
                Next
                chiffre_d_affaire = resultat' la fonction renvoie a la sub qui l'a appelé le resultat 
            End If
            .Quit' on a ce que l'on voulait  OU PAS !!!!on ferme IE 
        End With
    End Function
    je pense que les commentaires sont assez simple et t'aideront a comprendre le fonctionnement

    t'a un peu du taf , il te reste plus qu'a dans la sub test faire la meme chose que je fait pour pour cells(1,2) et cells(1,1) dans une boucle
    tu aura "not found" si la fonction ne trouve pas
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Importer un fichier pdf sur ma page Web
    Par manel ingenieur dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/01/2011, 16h09
  2. importer un fichier pdf sur ma page web
    Par manel ingenieur dans le forum Services Web
    Réponses: 0
    Dernier message: 10/01/2011, 10h13
  3. Réponses: 2
    Dernier message: 12/07/2006, 16h41
  4. Recherche d'application web (PHP) :: Gestion de fichiers
    Par KissCoolMan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 08/01/2006, 15h43
  5. [DEV-C++]#import de fichier .tlb
    Par pdl dans le forum Dev-C++
    Réponses: 6
    Dernier message: 19/07/2002, 22h46

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