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 :

Récupération automatique tx de change sur web


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 191
    Points : 59
    Points
    59
    Par défaut Récupération automatique tx de change sur web
    Bonjour
    Je souhaite, quotidiennement et automatiquement, mettre à jour une table contenant le taux de change de certaines devises ?
    Je sais que c'est vague comme question, mais avez-vous une idée ?
    Merci

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Je vais te dire comment je fais.

    J'ai une table XRates ayant pour champs
    Devise : texte (3)
    EUR2DEV : Numérique>Décimal (précision 18, Echelle 4)

    A la main j'ai entré les devises qui m'intéressent (par ex: CHF, GBP, JPY, NOK, SEK, USD)
    Ensuite je lance cette fonction (appelée par un bouton)
    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
    Function ImportXmlEurofXref()
    ' utilise ref VBA : Microsoft XML, version 2 ...\system32\msxml.dll
    Dim xmlDoc As MSXML.DOMDocument, xmlCube As MSXML.IXMLDOMNode, xmlNode As MSXML.IXMLDOMNode
    Dim db As DAO.Database, rXrates As DAO.Recordset
    Dim strCur As String, strRate As String, curRate As Currency
    Dim strDecCar As String, strThCar As String, strTstFmt As String
     
    strTstFmt = Format(1234.5678, "#,##0.0000")
    If Len(strTstFmt) = 10 Then
       strThCar = Mid(strTstFmt, 2, 1)
    Else
       strThCar = ""
    End If
    strDecCar = Mid(strTstFmt, Len(strTstFmt) - 4, 1)
     
    Set xmlDoc = New MSXML.DOMDocument
    ' Charge fichier xml
    xmlDoc.Load "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"
     
    ' Attendre que le document soit interprété
    While (xmlDoc.parsed = False)
        DoEvents
    Wend
     
    ' Format fichier xml :
    ' ---------------------------------------------------
    '   <Cube>
    '       <Cube time="2009-03-05">
    '           <Cube currency="USD" rate="1.2555"/>
    '           ....
    '           <Cube currency="ZAR" rate="13.2079"/>
    '       </Cube>
    '   </Cube>
     
    ' Obtenir premier élément "Cube" dans le document
    Set xmlCube = xmlDoc.documentElement.SelectSingleNode("Cube")
     
    ' Elément "Cube" de niveau inférieur
    Set xmlCube = xmlCube.SelectSingleNode("Cube")
     
    Set db = CurrentDb
    Set rXrates = db.OpenRecordset("Xrates", dbOpenDynaset)
     
    ' Boucler sur les noeuds inférieurs (<Cube currency="CCC" rate="n.nnnn"/>)
    '  et récupérer les attributs "currency" et "rate".
    '  Le taux est EUR/DEVISE (1 EUR = n.nnnn CCC)
    For Each xmlNode In xmlCube.ChildNodes
        strCur = xmlNode.Attributes.getNamedItem("currency").NodeValue
        strRate = xmlNode.Attributes.getNamedItem("rate").NodeValue
        strRate = Replace(strRate, ".", strDecCar)
        curRate = CCur(strRate)
     
        'Debug.Print "1 EUR = " & curRate & " " & strCur, strRate
     
        ' Rechercher la devise dans la table et la mettre à jour
        rXrates.FindFirst "Devise=""" & strCur & """"
        If Not rXrates.NoMatch And curRate <> 0 Then
           rXrates.Edit
           rXrates("EUR2DEV") = curRate
           rXrates.Update
        End If
     
    Next
     
    ENDP:
    rXrates.Close
    db.Close
     
    Set xmlCube = Nothing
    Set xmlDoc = Nothing
     
    End Function
    La fonction récupère un fichier xml sur internet (http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml) et met à jour
    le taux de change dans la table XRates.
    Dans le projet VBA il faut une référence à DAO et une à "Microsoft XML, version 2".

    Si les devises dont tu as besoin sont dans le fichier xml tu doit pouvoir utiliser mon code.
    Devises disponibles

    A+

Discussions similaires

  1. récupération automatique de données à partir du web
    Par harrat dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2011, 20h35
  2. Récupération d'un fichier XML sur le web
    Par ZeVlad dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 30/01/2007, 02h50
  3. Réponses: 9
    Dernier message: 09/02/2006, 11h01
  4. Réponses: 6
    Dernier message: 26/01/2006, 00h01
  5. Réponses: 4
    Dernier message: 19/01/2004, 08h52

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