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 des données sur internet et les integrer dans un ficher Excel [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut Récupérer des données sur internet et les integrer dans un ficher Excel
    Bonjour à tous,

    Voila dans le cadre d'un de mes projet je voudrais pouvoir extraire des données d'internet pour les intégrer dans un fichier excel.

    Mon url est celui ci : http://aguila-bidart.fr/demo/ISSY/we...e.php?ndDay=31

    Je souhaiterai que les informations contenue sur cette URL soit intégrer dans un ficher Excel en passant par une macro pour l'automatiser.

    Avez vous une idée pour m'aidez s'il vous plaît ?

    Merci par avance.

    Clément.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Une piste avec le code suivant
    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
    Sub aa()
    Call ExtractionData("http://aguila-bidart.fr/demo/ISSY/webservice.php?ndDay=31")
    End Sub
     
    Sub ExtractionData(URL As String)
    Dim S As Worksheet
    Dim IE As Object
    Dim A$
    Dim var
    Dim i&
    '---
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate (URL)
    '---
    Do While IE.Busy
      DoEvents
    Loop
    '---
    A$ = IE.document.body.InnerText
    If A$ = "" Then Exit Sub
    '---
    var = (Split(A$, "}"))
    Set S = Sheets.Add
    '---
    For i& = LBound(var) To UBound(var)
      S.Range("a" & i& + 1 & "") = var(i&)
    Next i&
    '---
    IE.Quit
    Set IE = Nothing
    End Sub
    Lancez la macro "aa".
    Fichiers attachés Fichiers attachés

  3. #3
    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 heu...
    Bonsoir
    le soucis avec ce genre de fichier que j'aparenterais a du json c'est qu'il n'est pas structuré correctement
    alors quand on le recupere il tient dans une 15 ne de ligne tout acrochées

    si tu veux le restituer a l'identique du fichier initial sur le web
    il te faut astucer
    ici encore l'exercice sera facile
    prenons la 1 ere ligne en exemple
    [{"value_Mesure":"0","timestamp_Mesure":"1436172169"},{"value_Mesure":"0","timestamp_Mesure":"1436179595"},{"value_Mesure":"0","timestamp_Mesure":"1436187024"},{"
    il y a 6 fois mesure
    3 fois timestamp
    et je suppose que cse sont les mesure que tu veux récupérer et donc :
    nous en trouvons 6 tiens!!!! 6 sa me rappelle quelque chose

    nous allons donc couper le texte par mesure acompagné de son ":"

    pour cela
    split(texte,"mesure"":" & chr(34)
    maintenant comme le texte obtenu par le telechargement par IE ou une requete nous le restitu pas ligne par ligne il faut les recréer
    donc dans une boucle sur les mesure (coupe) on incremente une variable jusqu'a 6 puis la ramenons a zero et incrementant une seconde variable pour la ligne a chaque fois que la 1 ere ateint 6
    resultat moins d'un quart de seconde
    j'ai utiliser plutot une requete (plus rapide ne demandant pas de parametre )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim ReQ, url,coupe,compte,lig
        url = "http://aguila-bidart.fr/demo/ISSY/webservice.php?ndDay=31"
        Set ReQ = CreateObject("microsoft.xmlhttp")
        ReQ.Open "POST", url, False
        ReQ.send
        coupe = Split(ReQ.responsetext, "Mesure"":" & Chr(34))
        lig = 1
        For i = 1 To UBound(coupe)
            compte = compte + 1
            Cells(lig, compte) = Split(coupe(i), Chr(34))(0)
            If compte = 6 Then lig = lig + 1: compte = 0
        Next
    End Sub
    résultat voila
    Pièce jointe 184277

    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

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut
    Bonjour PMO2017 et Patricktoulon,

    D'abord merci beaucoup pour votre aide c'est un grand début pour moi.

    Pour répondre à ta question Patricktoulon, en effet les informations dans cet URL sont en vrac, moi j'aimerai avoir deux information par ligne (comme dans ta macro) mais avec seulement deux colonnes :

    colonne 1 colonne 2
    Ligne 1 : 0 | 1436172169
    Ligne 2 : 0 | 1436179595
    etc ...

    Car la la macro que tu as faite, qui est très bien, mais elle met les résultats sur 6 colonnes alors que moi j’aimerai seulement avoir deux colonnes.

    Je vous remercie grandement pour votre aide !

    Merci par avance pour cette dernière question.

    Bonne journée à vous.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut
    Re,

    Et j'aimerai aussi rajouter pour chaque case de ce type "1436172169" la transformer avec cette formule =((("case"/60)/60)/24)+ DATE(1970;1;1)+(1/24) pour avoir une date normale qui s'affiche.

    Merci pour votre aide

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    colonne 1 colonne 2
    Ligne 1 : 0 | 1436172169
    Ligne 2 : 0 | 1436179595
    etc ...
    Bonjour,

    Essayez avec ce nouveau 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
    Sub Extraire()
    Call ExtractionData("http://aguila-bidart.fr/demo/ISSY/webservice.php?ndDay=31")
    End Sub
     
    Sub ExtractionData(URL As String)
    Dim S As Worksheet
    Dim IE As Object
    Dim A$
    Dim var
    Dim i&
     '---
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate (URL)
    '---
    Do While IE.Busy
      DoEvents
    Loop
    '---
    A$ = IE.document.body.InnerText
    '---
    IE.Quit
    Set IE = Nothing
     
    '###########################
    If A$ = "" Then Exit Sub
    A$ = Replace(A$, "[", ",")
    A$ = Replace(A$, "]", "")
    A$ = Replace(A$, ",{" & Chr(34) & "value_Mesure" & Chr(34) & ":" & Chr(34), "")
    A$ = Replace(A$, "," & Chr(34) & "timestamp_Mesure" & Chr(34) & ":" & Chr(34), "")
    var = (Split(A$, "}"))
    Set S = Sheets.Add
    '---
    For i& = LBound(var) To UBound(var)
      S.Range("a" & i& + 1 & "") = var(i&)
    Next i&
    '---
    S.[a1].CurrentRegion.TextToColumns Destination:=Range("A1"), _
      DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
      Comma:=False, Space:=False, Other:=True, OtherChar:=""""
    End Sub
    Lancez la macro "Extraire".
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Juillet 2015
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Juillet 2015
    Messages : 37
    Par défaut
    Re,

    MERCI PMO2017 ! c'est exactement ça ! merci beaucoup !

    Encore une dernière question et je ne t’embête plus.. Saurait tu comment transformer directement dans la macro les éléments "timestamp_Mesure" qui sont actuellement de ce style "1436172169" en ce style la (13/03/2015 08:45) grâce à la formule suivante : =((("case"/60)/60)/24)+ DATE(1970;1;1)+(1/24).

    Merci beaucoup pour ton temps !

    Clément.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/07/2012, 15h57
  2. récupérer des données sur internet
    Par rico63 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2012, 16h59
  3. [AC-2007] Récupérer des données sur internet
    Par nadir-1961 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/06/2011, 13h09
  4. [MySQL] Récupérer des données de MySQL et les envoyer dans un PDF
    Par cdevl32 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 16/03/2009, 20h53
  5. Récupérer des données sur une page HTML
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/11/2005, 17h22

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