Comment lire des données à partir de pages Web en ligne avec Excel VBA

Partage maintenant:

Cet exercice montre comment lire les données d'un site Web, dans ce cas les taux de change à la minute de Yahoo.com.

Il est supposé que le lecteur a affiché le ruban Développeur et est familiarisé avec l'éditeur VBA. Si ce n'est pas le cas, veuillez Google "Excel Developer Tab" ou "Excel Code Window".

Les prérequis incluent une connaissance du remplissage des listes déroulantes et de la définition des noms.

Le classeur est composé de deux feuilles :

L'interface utilisateur:L'interface utilisateur

Les listes déroulantes Acheter et Vendre font référence à la fiche technique locale ci-dessous.

Le tableau à D11 sera automatiquement collé à partir du site Web lui-même, en conservant le formatage de l'utilisateur.Acheter et vendre des devises

Le xlsm de cet exercice peut être téléchargé ici.

Construire l'application vous-même.

Créez une feuille avec deux listes déroulantes. Les zones de liste déroulante référenceront des cellules sur une deuxième feuille.

Les listes déroulantes invoqueront également le code pour lire le site Web, en utilisant le Changer un événement.

Les noms de devises peuvent être collés dans la deuxième feuille ("Devises") à partir de la liste ci-dessous, l'ordre de tri étant une question de préférence personnelle :

ZAR
USD
EUR
GBP
CHF
AUD
NZD
JPY
CAD
SEK
DKK
NOK
MUR
HKD
SGD
ILS
AED
INR
CNY

Collez les données dans les colonnes B et E.

Définissez les noms et utilisez les fonctions d'index selon l'illustration :Acheter et vendre des devises

Puisque les noms ont été définis sur la feuille de données locale "Devises", la feuille "Principale" n'a qu'à se référer aux noms définis pour obtenir la valeur, c'est-à-dire =VENDRE et =ACHETER pour les cellules "Principales" E10 et G10 respectivement.

Nous allons programmer Excel pour lire le web. Il possède cependant son propre processus intégré sur le ruban de données, dont vous souhaiterez peut-être enregistrer une instance en tant que macro lors de la création de différents scénarios. Notez que les configurations de l'ordinateur ou du navigateur peuvent affecter négativement les scripts des pages Web.

Le code

Insérez un module et entrez ce qui suit :

Option Explicit

Sub Ticker()
  Dim currBuy As String
  Dim currSell As String

  Range("D11:F14").ClearContents      'prepare the ground for the web data
  currBuy = Range("BUY")          'get variable values from Defined Names previously set up
  currSell = Range("SELL")
  With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://finance.yahoo.com/q?s=" & currBuy & currSell & "=X", Destination:=Range("$D$11"))
    .Name = "q?s=" & currSell & currBuy & "=X"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .WebSelectionType = xlSpecifiedTables
    .WebFormatting = xlWebFormattingNone
    .WebTables = """table1"""
    .WebPreFormattedTextToColumns = True
    .WebConsecutiveDelimitersAsOne = True
    .WebSingleBlockTextImport = False
    .WebDisableDateRecognition = False
    .WebDisableRedirections = False
    .Refresh BackgroundQuery:=False
  End With
End sub

Sub DropDown2_Change()    'This event will call the routine above. Object name might differ.
    Call Ticker
End Sub

Sub DropDown1_Change()
    Call Ticker
End Sub

Enregistrez le classeur sous le type xlsm.

Testez le code en changeant les valeurs des combos, puis affinez les formats du tableau collé (quatre décimales, quadrillage, ombrages ?).

Corruption de fichiers Excel

Excel est parfois connu pour corrompre les fichiers lors de l'enregistrement, puis tenter sa propre routine d'auto-récupération qui, souvent, d'après mon expérience, ne fonctionne tout simplement pas. Cela peut être désastreux pour l'utilisateur, car c'est le fichier source (éventuellement votre seule copie) qui est détruit. Fichiers Excel endommagés peuvent cependant être réparés à l'aide d'outils tiers, ce qui permet d'économiser un temps et des efforts considérables.

Introduction de l'auteur:

Felix Hooker est un expert en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris réparation rar archives et produits logiciels de récupération sql. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.