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écupérer le contenu d'une page web [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut Récupérer le contenu d'une page web
    Bonjour,
    je sais que la question est posée régulièrement et que dans la FAQ il y a des pistes, mais je ne trouve pas ce que je recherche.

    Je voudrais tout simplement pouvoir lire le contenu d'une page WEB affichée, zone par zone, toutes les zones, ou ligne par ligne, toutes les lignes. ce qui compte c'est de récupérer l'ensemble des zones car ensuite je compte bien me débrouiller pour extraire les zones:champs qui m'intéresse.

    Pour la petite histoire, la page contient 1 ligne par élève, dont au début sont email, ses noms et prénoms, et à la fin la cotation obtenue au test.

    Je voudrais récupérer cela pour éviter de devoir lire ligne par ligne et réencoder les cotations de plusieurs centaines d'étudiants.
    La modif du site pour un export qui répond à mes besoins n'est pas autorisée.

    Même si la technique que vous pouvez proposer est totalement barbare, je suis prêt à la tester, le gain de temps en valant la chandelle.


    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Je ne sais pas si tu trouveras réponses à ta question mais je sais que Jacques Chaussard a fait des choses extraordinaires avec Excel et Internet notamment pour relever les cours de bourse.
    Son lien ici, va dans l'onglet Finances ou peut-être sur le site de Florence Cabon.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour Philippe,

    je suis sur le site de Jacques Chaussard et c'est effectivement extraordinaire. j'espère y trouver mon bonheur.

    Merci pour ce lien.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Par défaut
    Bonjour,

    Il se trouve que c'est justement ce sur quoi je planche.
    Enfin, ça me parait tellement simple que j'ai des doutes

    J'insère mon historique d'opérations bancaire depuis le site de ma banque sur une feuille de calcul excel.
    Ensuite je re-traite les données pour les formater comme bon me semble et suivre mes comptes.

    Deux piste pour ça.

    - la première :

    consiste à faire un ctrl+A puis ctrl+C sur ta page web.
    puis sous excel tu fait un "collage spécial", choix "texte unicode"

    Il ne te reste plus qu'a gérer tes chaines de caractère avec les fonctions LTrim, RTrim, Mid, Len etc.

    - la seconde :
    Tu fait la même chose mais au lieu de coller tes données sous excel tu les colles sur un fichier texte que tu sauvegarde.

    Puis sous excel tu utilises la fonction :
    "Données" => "Données externes" => "Importer des données..." et tu choisis ton fichier texte.

    Cette deuxième technique te permettra de gérer les espaces et tabulations de ton fichier texte pour démarrer un pré-traitement des données.

    (pour ceux qui ne connaissent pas cette fonction, excel ouvre une fenêtre montrant le contenu du fichier texte et propose de créer des "colonnes fixe" qui seront mise dans des cases séparés)

    ps : cette phase d'import de fichier et de gestion des données peu se faire à l'aide d'une macro.

    Si je n'ai pas été suffisament clair je pourrai revenir sur cette explication succinte.

    J'espère que cette réponse t'aura aidé.

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut Sinn le sage,

    j'ai tenté ceci, mais impossible car la page que je dois récupérer utilise le Plug-in flash player et rien n'est copiable.

    Merci quand même pour cette excellente suggestion.

    Pour l'instant, je travaille à tester ceci, plus précisément le point 4.

    Peut-être y trouveras tu aussi ton bonheur.

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Héhé, très amusant la récup d'info depuis le Web.

    J'avance bien mais je calle au stade suivant :

    La page a accéder nécessite un login.
    Pour ce faire, le code suivant (rendu neutre pour la publication) fonctionne parfaitement et me conduit exactement où je dois aller, càd sur la page voulue avec les données voulues.
    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
    Sub Part_1_connect_ie()
     
    'Page 1 Login
    ThisWorkbook.FollowHyperlink "http://url.WEB/reportingWebApp/base/login.reporting", , True
    Application.Wait (Now + 7 / 3600 / 24)
    For num = 1 To 3
    SendKeys "+{TAB}", True
    Next
    SendKeys "user", True
    SendKeys "{TAB}", True
    SendKeys "password", True
    SendKeys "{TAB}", True
    SendKeys "~"
     
    Application.Wait (Now + 7 / 3600 / 24)
    'Page 2 : Page Welcome
    For num = 1 To 7
    SendKeys "{TAB}", True
    Next num
    SendKeys "~"
     
    End Sub
    J'ai trouvé sur le même site de Jacques Chaussard un code pour lire le contenu de la page, mais ce code n'est pas prévu pour une page avec Login (comme dans le code ci-dessus).

    Voici ce code :
    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
    37
    38
    39
    40
    41
    42
    43
    Private Declare Function OuvreInternet Lib "wininet" _
         Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, _
         ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
    Private Declare Function fermeInternet Lib "wininet" _
         Alias "InternetCloseHandle" (ByVal hInet As Long) As Integer
    Private Declare Function code_page Lib "wininet" _
         Alias "InternetReadFile" (ByVal hFile As Long, ByVal sBuffer As String, _
         ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    Private Declare Function Ouvrepage Lib "wininet" _
         Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, _
         ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, _
         ByVal dwContext As Long) As Long
     
    Sub Part_2_Get_info()
     
    Dim texte_code As String * 1024
     
    page_Web_à_lire = InputBox("URL de la page à lire ?", _
         "code de la page Internet", "http://url.WEB/reportingWebApp/base/reporting")
    internet = OuvreInternet("toto", 1, vbNullString, vbNullString, 0) 'ouvre Internet
    URL = Ouvrepage(internet, page_Web_à_lire, vbNullString, _
        0, &H400000 Or &H4000000 Or &H80000000, 0) 'ouvre la page Web
    'lecture du code de la page par paquet de 1024 caractères
    txt = ""
    nb_caractères_lus = 1
    Do While nb_caractères_lus > 0
    'lit 1024 caractères et les copie dans texte_code
    code_page URL, texte_code, 1024, nb_caractères_lus
    txt = txt & Left(texte_code, nb_caractères_lus)
    Loop
    fermeInternet URL 'ferme la page
    fermeInternet internet 'ferme Internet
     
    MsgBox txt
     
    'recopie dans un fichier texte
    Open "c:\rien.txt" For Output As #1
    Print #1, txt
    Close #1
    'ouverture du fichier téléchargé
    ThisWorkbook.FollowHyperlink "c:\rien.txt", , True
     
    End Sub
    En sachant que
    * le premier code utilise Firefox, mon navigateur par défaut
    * le deuxième code utilise IE et qu'il crée lui même son instance IE sans login
    * que la page où récupérer les infos n'est plus celle du loggin (vu les SendKeys)

    Quelqu'un peut-il m'aider pour mixer ses 2 codes ou me dire comment lire en Draft, comme dans le code 2, tout ce qui est dans la page sélectionnée par le code 1.

    Merci beaucoup d'avance pour votre aide qui me fera gagner un temps de réencodage immense.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le contenu d'une page web protégée
    Par karoudja dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 10h21
  2. récupérer le contenu d'une page web
    Par marielaure2805 dans le forum Langage
    Réponses: 4
    Dernier message: 28/02/2007, 13h12
  3. Récupérer le contenu d'une page web
    Par smarties dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 13/02/2007, 01h25
  4. [Servlet]Récupérer le contenu d'une page web
    Par Jarodnet dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 06/10/2005, 15h47

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