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

VBA Access Discussion :

Télécharger un fichier XML (provenant d'une APIREST) à injecter dans ACCESS ou EXCEL


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Télécharger un fichier XML (provenant d'une APIREST) à injecter dans ACCESS ou EXCEL
    Bonjour à tous,

    Un fournisseur de Webanalytics me fournit une URL que je peux charger dans un navigateur afin de récupérer les données au format XML.
    L'url se présente comme suit :

    https://apirest.atinternet-solutions...-results=10000&page-num=1

    Quelqu'un pourrait-il me donner quelques pistes afin de créer un code VBA me permettant de charger automatiquement ces données dans une table access ou un fichier excel.
    (le mieux étant access).
    - en rendant les champs start et end variables
    - en faisant varier page-num de façon à récupérer autant de pages que nécessaire (normalement pas plus de 3).

    Si vous pouviez me mettre le pied à l'étrier, ce serait super !!
    J'arrive en général à me débrouiller dans VBA Access et Excel mais ce n'est pas mon métier.
    L'idée étant d'attaquer ensuite ces données avec BO ou Qlikview).

    Merci de votre aide et bonne journée,

    Arnault

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Si c'est du XML, tu le lis avec un DOMDocument et tu remplis ta table...
    Quelle que soit la source, il faut juste le moyen de lire le contenu ; pour le reste, c'est le même principe.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour Argy et merci de ta réponse,
    Je ne pense pas pouvoir m'en sortir sans un exemple dont je puisse m'inspirer.
    je vais faire quelques recherches mais ça me semble assez complexe.
    Bonne journée,
    Arnault

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bah, déjà, fournis-nous donc un exemple de XML et on pourra te guider...

    Ton lien nécessite un compte avec MDP.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Quand je tape l'adresse suivante dans le navigateur :
    "https://apirest.atinternet-solutions.com/data/v2/xml/getData?&columns={d_time_date,m_visits,m_visitors,d_site,d_page,m_page_loads,d_l2,d_page_chap1,d_page_chap2,d_page_chap3}&sort={-m_visits}&space={s:61074}&period={D:{start:'2015-01-01',end:'2015-01-01'}}&max-results=10"

    Je récupère dans ma page le contenu du fichier texte joint.

    Merci,

    Arnault

    fichier xml.txt

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bien, somme toute, c'est un fichier XML basique...

    Tu as des FAQ sur le sujet.

    As toi de voir celle qui te conviens le mieux.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci,
    Je vois bien comment lire le fichier xml.
    Mais avant ça, il faut que la procédure récupère le fichier à l'adresse "https://apirest.atinternet-...."
    J'espère que c'est clair ...
    A.

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Je persiste et signe, ton lien exige un login/mdp...

    Voici un exemple pour télécharger :
    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
    44
    45
    46
    47
    48
     
     
    Sub Test_DownloadFile()
    Dim strTargetURL                                       As String
    Dim strFilename                                       As String
     
        strFilename = "C:\Téléchargement\XML\ApiRest_Test.xml"
        strTargetURL = "https://apirest.atinternet-solutions.com/data/v2/xml/getData?&columns={d_time_date,m_visits,m_visitors,d_site,d_page,m_page_loads,d_l2,d_page_chap1,d_page_chap2,d_page_chap3}&sort={-m_visits}&space={s:61074}&period={D:{start:'2015-01-01',end:'2015-01-01'}}&max-results=10"
        Call DownloadFile(strFilename, strTargetURL, True)
    End Sub
     
    Sub DownloadFile(ByVal TargetFileName As String, ByVal URL As String, ByVal OverWrite As Boolean)
    Const NO_OVERWRITE_FILE                                As Integer = 1
    Const OVERWRITE_FILE                                   As Integer = 2
     
        On Error GoTo L_ErrDownloadFile
     
        Dim WinHttpReq                                     As Object
        Dim oStream                                        As Object
        Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
        With WinHttpReq
            .Open "GET", URL, False, "username", "password"
            .Send
        End With
        URL = WinHttpReq.responseBody
        If WinHttpReq.Status = 200 Then
            Set oStream = CreateObject("ADODB.Stream")
            With oStream
                .Open
                .Type = 1
                .Write WinHttpReq.responseBody
                .SaveToFile TargetFileName, IIf(OverWrite, OVERWRITE_FILE, NO_OVERWRITE_FILE)
                .Close
            End With
        Else
            Err.Raise vbObjectError + WinHttpReq.Status, "Téléchargement échoué", "Erreur " & WinHttpReq.Status & " levée durant l'accès au site..." & vbCrLf & vbCrLf & "Sans doute une authentification est nécessaire pour accéder à la ressource..."
        End If
     
        On Error GoTo 0
    L_ExDownloadFile:
        Set oStream = Nothing
        Set WinHttpReq = Nothing
        Exit Sub
     
    L_ErrDownloadFile:
        MsgBox Err.Description, 48, Err.Source
        Resume L_ExDownloadFile
    End Sub
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ton code marche Nikel, il crée bien le fichier xml.

    je vais maintenant essayer d'appliquer le modèle de script de la FAQ que tu m'as indiqué pour lire ce fichier et le stocker dans une table.

    Donc la logique globale serait :
    - je télécharge unfichier xml
    - je le lis pour le stoker dans une table access
    C'est bien ça ?

  10. #10
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Donc la logique globale serait (plutôt ) :

    1. je vérifie la disponiblité d'internet
    2. je télécharge le fichier xml
    3. je vérifie sa disponibilité locale
    4. je vérifie que sa structure est bonne via DOM
    5. je le lis pour le stocker dans une table temporaire Access
    6. je contrôle le contenu dans la table temporaire avec le compteur qui a énuméré le nombre d'occurences ou via une collection qui a été alimenté avec des clés identificatrices
    7. j'insère le tout dans la table finale si tout va bien
      => tout ça biensûr blindée de gestions d'erreurs


    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    développeur occasionnel
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : développeur occasionnel

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    hum, je pense que je vais me contenter déjà de tes points 1 et 5 dans un premier temps.

    Je viens de coller le code suivant issu de la FAQ pour lire le fichier XML.

    L'instruction Private Sub BrowseChildNodes(root_node As IXMLDOMNode) me retourne l'erreur suivante :
    erreur de compilation : type défini par l'utilisateur non défini.
    J'ai à un moment pensé à une bibliothèque non installée mais l'erreur persiste.

    Si tu as une idée.

    Arnault

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Oui, il faut que tu fasses référence à Microsoft XML, v4.0 ou v6.0 ; à toi de voir selon.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. [DOM] Charger un fichier XML provenant d'une URL
    Par ovni dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/05/2011, 11h42
  2. parser un flux xml provenant d'une anim flash
    Par pyd001 dans le forum Langage
    Réponses: 3
    Dernier message: 11/07/2006, 10h43
  3. fichier XML à partir d'une base de données SQL
    Par MuldyMath dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 24/05/2006, 13h57
  4. Télécharger un fichier XML et non l'ouvrir
    Par BouB dans le forum Langage
    Réponses: 4
    Dernier message: 21/03/2006, 19h37
  5. [DOM] [JAVA + XML] Ouvrir un fichier xml à partir d'une url
    Par Hell dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/06/2005, 00h06

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