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

  1. #1
    Membre à l'essai
    Taux de change en ligne et automatisation avec Access
    Bonjour,

    Je suis bloquée sur un problème et je n’ai pas trouvé la solution pour faire ce que je veux avec Access.
    J’aimerais une récupération automatique en ligne des taux de change et un calcul derrière pour que tout soit en euros. Je vous explique :

    J’ai dans une table « Partenaires » où j'ai des partenaires qui se trouvent dans les quatre coins du monde. Du coup, leurs CA, leurs taux horaire… sont tous dans des devises différentes et c’est bien compliqué pour faire des analyses et cela fait perdre du temps quand on doit tout recalculer en euro en fonction des cours.

    Du coup est-ce qu’il serait possible de chercher les taux de change en ligne, les adapter à chaque partenaire en fonction de sa devise et de faire un calcul qui va bien pour que cela soit en EUR?
    Sachant que j’ai une colonne Devise (où j’ai EUR, GPB, USD, CHF, JPY, …) dans ma table « Partenaires » et un champ Calcul_Euro ou alors je peux créer une table « Devise » avec

    Et comme dit plus haut, je n’ai aucune idée de comment écrire cela en VBA.

    Merci d’avance pour votre précieuse aide.

  2. #2
    Rédacteur/Modérateur

    Bonjour,

    Pour récupérer les cours, il faut que ton entreprise soit abonnée à un service idoine (Datastream par exemple).
    Une fois le complément mis en place (sous Excel par exemple), il est aisé de transposer les devises avec une table de correspondance.

    Mais récupérer en ligne comme ça, à part sans doute avec un API spécifique (payante ?), je ne vois pas.

    Si ton besoin se limite à quelques devise, tu peux récupérer manuellement la position et exécuter les conversions.

    Avant de parler VBA, essaye de viser l'option Requêtes action successives ; ensuite, on t'aidera dans ta tâche automatisée...

    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 2013 et 2016 */* 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
    Membre à l'essai
    Bonjour,

    Voici un bout de code qui permet de parser le fichier XML des taux de change de la banque central européenne.

    Il faut coller ce code dans un module et exécuter la routine "Test()" ce qui remplira une table "T_ECP". Donc ne pas oublier de créer avant une table nommée "T_ECP" avec deux champs nommés "DATA1" et "DATA2". De même ne pas oublier de rajouter la référence XML dans les compléments.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Compare Database
     
    Private Sub BrowseChildNodes(root_node As IXMLDOMNode)
        Dim i As Long
        Dim j As Long
        Dim Datas As String
     
        For i = 0 To root_node.childNodes.Length - 1
            If root_node.childNodes.Item(i).nodeType <> 3 Then
                Datas = ""
                For j = 0 To root_node.childNodes.Item(i).Attributes.Length - 1
                    Datas = Datas & "'" & root_node.childNodes.Item(i).Attributes.Item(j).nodeValue & "', "
                Next j
     
                If Datas <> "" Then
                    Datas = "(" & Left(Datas, Len(Datas) - 2) & ")"
                    If UBound(Split(Datas, ",")) = 1 Then
                         Call StoreData("T_ECP", 2, Datas)
                    End If
                End If
            End If
            BrowseChildNodes root_node.childNodes(i)
        Next
    End Sub
     
    Private Sub BrowseXMLDocument(ByVal filename As String)
        Dim xmlDoc As DOMDocument, root As IXMLDOMElement
        Dim i As Long
     
        Set xmlDoc = New DOMDocument
        xmlDoc.async = False
        xmlDoc.Load filename
        Set root = xmlDoc.documentElement
        If Not root Is Nothing Then
            BrowseChildNodes root
        End If
        Set xmlDoc = Nothing
    End Sub
     
    Private Sub StoreData(TbDest As String, NbField As Long, MyData As String)
        Dim Db As Database
     
        Set Db = CurrentDb()
     
        Db.Execute ("INSERT INTO " & TbDest & " (DATA1, DATA2) VALUES " & MyData)
     
        Set Db = Nothing
     
    End Sub
     
    Sub test()
        Dim Db As Database
        Set Db = CurrentDb()
        Db.Execute ("DELETE * FROM T_ECP")
        BrowseXMLDocument "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
        Set Db = Nothing
        MsgBox "ok"
    End Sub


    Cordialement,

  4. #4
    Rédacteur/Modérateur

    Merci Harvi, je ne connaissais pas ce site (page).

    Par contre (c'est le vieux modo qui parle ;o) et sauf erreur de ma part, ange180190 étant certainement débutante de par ses propos, il faudrait te mettre à son niveau car déjà VBA semble ou risque d'être abscons mais triturer du XML via un DomDoc encore plus, je pense.
    Disons que pour éviter les A/R, c'est sans doute mieux ainsi. Qu'en penses-tu ?

    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 2013 et 2016 */* 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
    Membre à l'essai
    Bonjour argyronet,

    Je suis désolé, je suis effectivement conscient que ce code n'est pas forcement abordable par tous, mais je n'ai pas d'autre solution à apporter pour le moment. En tout cas merci pour votre remarque j'essaierai d'en tenir compte dans mes prochains posts.

    Cordialement,

  6. #6
    Membre à l'essai
    Bonjour,

    Merci Harvi et argyronet pour vos réponses!

    Effectivement comme le dit si bien argyronet, je suis débutante et j'ai fais un peu de VBA mais là je ne vois pas trop comment mettre du XML dans les compléments par exemple.

    EDIT: je viens de comprendre pour les compléments XML, il faut télécharger le pack add in XML et l'activer dans les options c'est cela?

    Merci en tout cas!
    Bonne journée.

  7. #7
    Rédacteur/Modérateur

    En fait, il faut commencer par le début, c'est à dire faire référence à la bibliothèque MSXML.
    Normalement, tu n'as rien besoin de télécharger...
    Donc, depuis VBE, tu vas dans Outils/Références et tu repères Microsoft XML, V4.0 ou 6.0 selon ce que tu as... et tu la coches, puis OK.

    Bon, je me suis permis de refactoriser et commenter le code de Harvi pour que tu puisses mieux l'appréhender :

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    '**********************************************************************
    ' File              : Form_Appareil et visites
    ' Module            : DémoForum
    ' DateTime          : 26/01/2016
    ' Reviewed by       : Jean-Philippe AMBROSINO
    ' Code from         : Harvi
    ' Review date       : 01/02/2016
    ' Purpose           : http://www.developpez.net/forums/d1565131-nouveau/logiciels/microsoft-office/access/taux-change-ligne-automatisation-access/
    '
    '**********************************************************************
     
    Option Compare Database
    Option Explicit
     
    'Clause SQL d'insertion des lignes
    Private Const INSERT_CLAUSE                            As String = "INSERT INTO DeviseEtTaux (Devise, Taux) VALUES (#1);"
    'Clause SQL de suppression des lignes
    Private Const DELETE_CLAUSE                            As String = "DELETE * FROM DeviseEtTaux ;"
    'Clause SQL de MAJ des lignes
    Private Const UPDATE_CLAUSE                            As String = "UPDATE DeviseEtTaux SET DeviseEtTaux.Taux = Replace([Taux],'.',',');"
    'Adresse HTTP du fichier XML de référence
    Private Const XML_EUROFXREF                            As String = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"
     
    Public Sub MAJTaux()
    Dim oDB                                                As DAO.Database
     
        On Error GoTo L_ErrMAJTaux
        'Instanciation de la BDD
        Set oDB = CurrentDb()
        'On efface la table
        oDB.Execute DELETE_CLAUSE, dbFailOnError
        'On exécute à la volé, l'ouverture du XML, l'insertion des taux
        BrowseXMLDocument XML_EUROFXREF, oDB, INSERT_CLAUSE
        'On met à jour la table selon le séparateur de décimales local
        If Mid(3.5 / 2, 2, 1) = "," Then
            oDB.Execute UPDATE_CLAUSE, dbFailOnError
        End If
        MsgBox "Mise à jour des taux terminée", vbInformation
        'On ferme la BDD
        oDB.Close
        On Error GoTo 0
    L_ExMAJTaux:
        Set oDB = Nothing
        Exit Sub
     
    L_ErrMAJTaux:
        MsgBox Err.Description, 48, Err.Source
        Resume L_ExMAJTaux
    End Sub
     
    Private Sub BrowseChildNodes(XMLNode As IXMLDOMNode, DB As DAO.Database, ByVal ScriptSQL As String)
    Const ELEMENT_NODE                                     As Long = 1
    Const ATTRIBUTE_NODE                                   As Long = 2
    Const TEXT_NODE                                        As Long = 3
    Const CDATA_SECTION_NODE                               As Long = 4
    Const ENTITY_REFERENCE_NODE                            As Long = 5
    Const ENTITY_NODE                                      As Long = 6
    Const PROCESSING_INSTRUCTION_NODE                      As Long = 7
    Const COMMENT_NODE                                     As Long = 8
    Const DOCUMENT_NODE                                    As Long = 9
    Const DOCUMENT_TYPE_NODE                               As Long = 10
    Const DOCUMENT_FRAGMENT_NODE                           As Long = 11
    Const NOTATION_NODE                                    As Long = 12
     
    Dim I                                                  As Long
    Dim J                                                  As Long
    Dim Data                                               As String
     
        'Pour chaque noeud
        For I = 0 To XMLNode.childNodes.Length - 1
            'si le noeud n'est pas de type 3
            If XMLNode.childNodes.Item(I).nodeType <> TEXT_NODE Then
                'alors Data est vidé
                Data = ""
     
                For J = 0 To XMLNode.childNodes.Item(I).Attributes.Length - 1
                    'A la première passe on obtient la devise, à la seconde le taux
                    '<Cube currency='USD' rate='1.0920'/>
                    'Ex : Data='USD', '1.0920',
                    Data = Data & "'" & XMLNode.childNodes.Item(I).Attributes.Item(J).nodeValue & "', "
                Next J
                'Si Data contient quelque chose
                If Data <> "" Then
                    'On épure la partie droite de la chaine (donc la virgule et l'espace)
                    Data = Left(Data, Len(Data) - 2)
                    'Si la chaine est un tableau avec 2 valeurs
                    If UBound(Split(Data, ",")) = 1 Then
                        'Alors on suppose que l'on a les deux valeurs devise et taux...
                        'Et on les ajoute à la table avec un remplacement du #1 par les deux valeurs
                        DB.Execute (Replace(ScriptSQL, "#1", Data)), dbFailOnError
                    End If
                End If
            End If
            'On fait un appel récursif cette même méthode
            BrowseChildNodes XMLNode.childNodes(I), DB, ScriptSQL
        Next
    End Sub
     
    Private Sub BrowseXMLDocument(ByVal XMLFilename As String, DB As DAO.Database, ByVal ScriptSQL As String)
    'Objet DOM Document
    Dim xmlDoc                                             As DOMDocument
        'Objet élément du XML (ici la racine)
    Dim xmlRoot                                            As IXMLDOMElement
    Dim I                                                  As Long
        'On créé une instance DOMDoc
        Set xmlDoc = New DOMDocument
        'En mode synchrone
        xmlDoc.async = False
        'On charge le fichier
        xmlDoc.Load XMLFilename
        'On affecte les éléments de la racine à l'objet xmlRoot
        Set xmlRoot = xmlDoc.documentElement
        'S'il y a des éléments alors on appelle BrowseChildNodes pour remplir la table via la clause INSERT
        If Not xmlRoot Is Nothing Then
            BrowseChildNodes xmlRoot, DB, ScriptSQL
        End If
        'On met fin aux objets
        Set xmlRoot = Nothing
        Set xmlDoc = Nothing
    End Sub
     
     
    'Structure du XML
    '----------------
    '<?xml version="1.0" encoding="UTF-8"?>
    '<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
    '    <gesmes:subject>Reference rates</gesmes:subject>
    '    <gesmes:Sender>
    '        <gesmes:name>European Central Bank</gesmes:name>
    '    </gesmes:Sender>
    '    <Cube>
    '        <Cube time='2016-01-29'>
    '            <Cube currency='USD' rate='1.0920'/>
    '            <Cube currency='JPY' rate='132.25'/>
    '            <Cube currency='BGN' rate='1.9558'/>
    '            <Cube currency='CZK' rate='27.026'/>



    Dans ton application, tu ajoutes un module et tu y colles ce bloc de code.
    Depuis un bouton de formulaire, tu appelles la procédure MAJTaux...

    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 2013 et 2016 */* 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 ***

  8. #8
    Membre à l'essai
    Super argyronet, c'est vraiment top!
    Merci pour ces commentaires bien détaillés du code, cela permet de bien comprendre.

    Je vais tester! Merci!

  9. #9
    Membre à l'essai
    J'ai testé, c'est genial tout fonctionne bien.
    Merci argyronet!

    J'ai juste encore une dernière demande et je n'arrive pas à l'écrire correctement.

    Ce serait qu'il rajoute une ligne en plus après l'importation du fichier XML qui est dans la colonne Devise:EUR et colonne Taux:1
    (pour faciliter mes calculs automatiques via mes requetes)

    Est-ce que cela est possible? Si oui, où dans le code?

    Merci mille fois!

  10. #10
    Rédacteur/Modérateur

    Bien ravi que tu aies réussi...

    Pour l'Euro, c'est simple...
    Tu peux modifier l'en-tête comme suit :
    Code en en-tête :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Clause SQL d'insertion EURO
    Private Const INSERT_EURO_CLAUSE                       As String = "INSERT INTO DeviseEtTaux (Devise, Taux) VALUES ('EUR', '1,0000');"
    'Clause SQL d'insertion des lignes
    Private Const INSERT_CLAUSE                            As String = "INSERT INTO DeviseEtTaux (Devise, Taux) VALUES (#1);"'....
    '....

    puis la procédure MAJTaux() comme ceci :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        If Mid(3.5 / 2, 2, 1) = "," Then
            oDB.Execute UPDATE_CLAUSE, dbFailOnError
        End If
        'On ajoute la ligne EURO pour finir:
        oDB.Execute INSERT_EURO_CLAUSE, dbFailOnError
    
        MsgBox "Mise à jour des taux terminée", vbInformation


    Par contre, il va sans doute falloir que tu prévois une colonne dans cette table qui convertie en numérique double la colonne Taux car sinon, cela risque d'être un peu pénalisant pour les calculs... Même si j'y ai greffé le bon séparateur de décimale conditionnel...

    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 2013 et 2016 */* 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
    Membre à l'essai
    C'est parfait!
    Merci beaucoup!


    J'utilise des requêtes de calcul pour le moment, où je mets en paramètre que je veux du numérique double en résultat, mais je me note ta remarque pour plus tard si toutefois j'en aurais besoin.

    Un problème de plus de résolu! Merci bien!

  12. #12
    Candidat au Club
    Bonjour


    N'étant franchement pas doué dans la programmation , j ai essayer de reproduire le même résultat
    que le code d ' argyronet avec comme devise de référence le Francs Suisse

    Pour cela j'ai remonter le lien suivant:

    http://www.pwebapps.ezv.admin.ch/apps/rates/rate/getxml?activeSearchType=today"

    Pouvez -vous m'aider

    Merci d’avance pour votre aide
    jerome

  13. #13
    Rédacteur/Modérateur

    Bonjour,

    Le site que vous mentionnez renvoie une page de taux avec le pays difficile à interpréter car il n'y a pas de séparateur.

    Déjà et d'une il faudrait la procédure pour récupérer la page mais ça,ce n'est pas trop bloquant et de deux, il faudrait un interpréteur capable de découper
    les devises par pays (à moins que vous vous basiez sur une liste prédéfinie comme tableau de référence avec la fonction SPLIT) mais pour un néophyte en programmation,ça ne va pas être simple).

    Par ailleurs, sur cette page ne figure pas de Franc Suisse.

    A mon avis, il faut trouver un source plus simple et appropriée à vos besoins.

    Et surtout nous préciser ce que vous voulez faire au juste...

    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 2013 et 2016 */* 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 ***

  14. #14
    Candidat au Club
    Bonjour et merci Argy de votre réponse
    J’ai créé sous Access pour mon besoin personnel une base pour gérer mon portefeuille titres.

    Mon besoin est :de pouvoir importer une fois par jour le taux de change pour certaine monnaie

    J’acheté et je revends pratiquement quotidiennement des actions, obligations,….. sous divers devises €, $ , JPY, GBP, …..(grand maximum une dizaine de monnaie) , ma monnaie de référence est le franc suisse
    Lors de la saisie de ces achats ou vente et afin d’éviter de rentrer manuellement à chaque fois un taux de change dans ma base, j’ai besoin d’importer un taux de change journalier.
    ( lors de la revente je veux analyser le gain ou la perte sur le titre et sur la monnaie.)

    Pour cela j’ai trouvé votre code que vous avez créé pour ange 180190, c’était exactement ce qui me faut , mais malheureusement la monnaie de référence est l’€uro donc impossible de l’utiliser ayant une monnaie de référence différente.

    En cherchant sur internet, j’ai malheureusement trouvé que ce lien :
    http://www.pwebapps.ezv.admin.ch/apps/rates/rate/getxml?activeSearchType=today"
    qui est malheureusement donc non exploitable.

    Pour l’instant j importe mes devises par le biais d’Excel avec : http://www.floatrates.com/daily/chf.xml

    Mais c’est pas très pratique il faut ouvrir Excel mettre a jour e, sauvegarder et après en ouvrant Access, j’importe automatiquement.

    j’aimerai éliminer le passage par Excel si possible

    Cherchant une solution depuis un certain temps, et, ne trouvant pas, j’ai pensé demander de l’aide.
    En vous remerciant

  15. #15
    Rédacteur/Modérateur

    Via une propriété Worksheet.QueryTables en précisant l'URL, vous pouvez rapatrier le tableau de devises automatiquement avec un bouton et en parallèle, faire en sorte que la feuille du classeur soit liée comme table dans votre application Access.
    Ainsi, vous disposez tout le temps des derniers cours.

    Sinon, il y aussi moyen, d'automatiser tout cela va Access avec Automation sur Excel mais cela exige des connaissances plus musclées car le risque d'erreur non maîtrisées est de mise dans ce type de codage.

    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 2013 et 2016 */* 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 ***

  16. #16
    Membre éprouvé
    Taux de change en ligne et automatisation avec Access
    Bonjour à tous,

    Je me permets d(intervenir sur ce billet résolu car il existe des sites pour récupérer les taux de change gratuitement.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub LinkCurrConv()
        On Error GoTo ErrMan
        Dim strSQL As String, XRates As String
        XRates = Nz(DLookup("Chemin", "Chemins", "Fonction='Taux de change'"), "http://www.floatrates.com/daily/eur.xml")
        If Nz(DLookup("CURUnik", "CurrencyRate", "Datevalue(CURDate)=#" & Format(Now, "mm/dd/yyyy") & "#"), 0) <> 0 Then GoTo Fin
        If isExistTable("@CurrConv") = -1 Then Call ViderTable("@CurrConv")
        Application.ImportXML DataSource:=XRates, ImportOptions:=acStructureAndData
        strSQL = "INSERT INTO [@CurrConv] ( title, link, description, pubDate, baseCurrency, baseName, targetCurrency, targetName, exchangeRate, inverseRate, inverseDescription ) " & _
            "SELECT item.title, item.link, item.description, item.pubDate, item.baseCurrency, item.baseName, item.targetCurrency, item.targetName, item.exchangeRate, item.inverseRate, item.inverseDescription " & _
            "FROM item;"
        Call ExecSQL(strSQL)


    Résultat:


    Ce qui me permet, dans mon appli de faire du multi-devises (150 quand même) au taux de la veille à minuit.
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  17. #17
    Rédacteur/Modérateur

    Oui, tout à fait
    Merci Ric500

    Disons que le demandeur passe par Excel - j'ignore s'il n'a d'autre choix ou si c'est voulu...
    Si cette étape est facultative, chose qu'il précisait être souhaitée, effectivement la méthode Application.ImportXML d'Access prévaut à la propriété Worksheet.QueryTables d'Excel pour laquelle je suggérais dans un premier temps une liaison dynamique dans sa base où il aurait pu faire ses requêtes et ce, compte tenu du fait qu'il précise être débutant en programmation.

    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 2013 et 2016 */* 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 ***

  18. #18
    Candidat au Club
    Bonjour à vous deux et merci de votre aide
    Je passe actuellement par Excel car je n’ai pas trouvé de code me permettant d’aller chercher les informations taux de change automatiquement lors que j’ouvre Access.
    Si j’ai bien compris la méthode ‘ Application.importXML ‘ m’évite de passer par Excel et d’importer directement dans Access.
    Je vais me pencher dessus
    Mais comme entant novice dans la programmation si vous avez un début de piste pour ceci c’est le bienvenu. ( ou peut être m’expliquer un peu plus en détail le code de Ric)
    Merci

  19. #19
    Rédacteur/Modérateur

    Le code de Ric effectue la même chose que la propriété pour Excel.
    • Un QueryTable dans Excel va importer dans une feuille de calcul.
    • Un ImportXml d'Access va importer dans une table prénommée.


    Dans un cas comme dans l'autre, il faudra monter pour le premier (Excel) une requête pour récupérer les valeurs et pour le second (Access) monter une procédure de découpage des valeurs car elles sont concaténées dans les champs et ensuite une requête idoine.

    Et effectivement avec la procédure Access, vous vous affranchissez d'Excel.

    Pour tester, vous pouvez mettre derrière un bouton l'instruction :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    Application.ImportXML DataSource:=URL, ImportOptions:=acStructureAndData

    URL est une constante qui contient l'@ du site à lire.

    Une table nommée channel va être créée et c'est elle qui servira de source à vos devise et leur valeurs...

    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 2013 et 2016 */* 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 ***

  20. #20
    Membre du Club
    Citation Envoyé par Harvi Voir le message
    Bonjour,

    Voici un bout de code qui permet de parser le fichier XML des taux de change de la banque central européenne.

    Il faut coller ce code dans un module et exécuter la routine "Test()" ce qui remplira une table "T_ECP". Donc ne pas oublier de créer avant une table nommée "T_ECP" avec deux champs nommés "DATA1" et "DATA2". De même ne pas oublier de rajouter la référence XML dans les compléments.

    Cordialement,

    Bonjour,

    Je viens de voir cette intéressante approche d'un problème auquel je fais face actuellement. Ma question reste de savoir comment rajouter la référence XML dans les compléments ?
    J'utilise Access 365 - version 2019 et ne trouve dans l'installation du programme aucun add-in XML (ni en com ni en access ni en autre) à intégrer via les options Access du menu Fichier (compléments) ou le gestionnaire de complément dans l'émulateur VBA.
    Dans les 2 cas, les listbox sont vides comme les répertoires.

    Please help.

    Guy
    Bruxelles

###raw>template_hook.ano_emploi###