Si vous travaillez avec des données commerciales et financières, il est parfois nécessaire d’effectuer des conversions de montants dans des devises étrangères, notamment pour la consolidation des comptes au niveau d’un groupe international ou pour les besoins de reporting des activités des filiales étrangères.
Lorsque la tâche est répétitive et nécessite de prendre les taux de change à des dates précises, cela peut vite devenir laborieux de récupérer les différentes valeurs de taux de change, car ils évoluent en permanence.
Une solution est de créer une table des taux de change, qui s’actualise pour la devise et la date voulue, de manière dynamique à partir d’une source internet. Ensuite vous pouvez y faire appel dans vos formules ou autres tables de données.
Il y a quelques années de cela, j’avais développé une macro VBA permettant de télécharger les cours du Forex depuis internet, mais elle demandait trop de maintenance. Aujourd’hui, je vous montre une méthode plus simple et accessible depuis Excel à l’aide de l’outil PowerQuery, intégré dans Excel à partir de la version 2016.
💱 Voici donc en images comment importer les cours des devises dans Excel !
Créer une connexion à la source internet avec PowerQuery
Le but de cette étape est de créer la connexion à la source de données. Une fois créée, il n’est plus besoin de refaire cette étape à chaque fois que vous souhaitez mettre à jour les cours des devises.
- Commencez par aller dans le menu Données d’Excel, rubrique “Obtenir des Données“. Vous êtes dans PowerQuery, ou plutôt le menu intégré à Excel de PowerQuery
- Dans ce menu, cherchez la source “Obtenir des données à partir du web“
- Dans la boîte de dialogue, il faut insérer le lien url de la source. Nous allons prendre comme exemple https://www.xe.com/currencytables/?from=EUR&date=2020-04-11. Il s’agit d’une adresse url paramétrée avec la devise de référence EUR et la date 11/04/2020. Nous verrons plus loin comment modifier ces valeurs dans la requête PowerQuery
- Naviguez ensuite dans les différentes tables trouvées dans cette page internet, et choisissez celle qui contient la liste des conversions de devises
- Cliquez sur Charger
Vous venez ainsi de créer une connexion pour télécharger très simplement les taux de change!
Modifier la requête PowerQuery
Dans cette étape, nous allons modifier la requête pour pouvoir paramétrer:
- la devise de référence à partir de laquelle les taux des devises étrangères sont calculés
- la date des taux de change
Pour cela, ouvrez le panneau des requêtes PowerQuery, allez dans Menu Données -> Requêtes et connexions et double-cliquez sur la requête.
Une fois dans PowerQuery, allez dans le panneau des étapes de la requête à droite, puis sélectionnez l’étape Source. Vous devriez avoir cela:
= Web.Page(Web.Contents("https://www.xe.com/currencytables/?from=EUR&date=2020-04-11"))
➡️ C’est la commande qui permet de créer la connexion à l’adresse URL que nous avons renseigné tout à l’heure.
Nous allons utiliser deux paramètres pour modifier cette commande comme suivant :
= Web.Page(Web.Contents(“https://www.xe.com/currencytables/?from=” & DeviseReference & “&date=” & TextDate))
Ces deux paramètres, nous allons les charger dans PowerQuery depuis une table Excel. De cette manière, on va pouvoir les utiliser en tant que paramètre de notre requête de connexion, et ils seront également automatiquement actualisés lorsqu’on souhaitera mettre à jour les taux de change.
-
- Dans votre classeur Excel, créez un tableau comme ci-dessous et transformer-le en Table nommée TabParam
- Chargez la table dans PowerQuery en cliquant sur le bouton ci-dessous du menu Données:
- Dans PowerQuery, vous devriez avoir une nouvelle requête TabParam:
- A l’aide d’une fonction personnalisée fnGetParameter, nous allons récupérer les valeurs des paramètres dans la requête TabParam pour les utiliser dans la requête d’actualisation des taux. Pour cela, créez une requête vide (Menu Accueil de PowerQuery->Nouvel Source->Autre source->Requête vide)) et copier-coller le texte suivant dans l’éditeur avancé :
// fnGetParameter (NomParametre as text) => let ParamSource = TabParam, ParamRow = Table.SelectRows(ParamSource, each ([Parametre] = NomParametre)), Value= if Table.IsEmpty(ParamRow)=true then null else Record.Field(ParamRow{0},"Valeur") in Value
- Maintenant nous allons appeler les paramètres Devise de Reference et Date Taux dans la requête de connexion à l’aide de cette fonction fnGetParameter. Sélectionnez votre requête de connexion, et modifiez le code dans l’éditeur avancé jusqu’à l’étape Source (inclue) comme suivant :
//Variables DeviseReference = if fnGetParameter("Devise de référence")=null then "EUR" else fnGetParameter("Devise de référence"), DateReference = if fnGetParameter("Date (facultatif)")=null then DateTime.Date(DateTime.LocalNow()) else (try DateTime.Date(DateTime.From(fnGetParameter("Date (facultatif)"))) otherwise DateTime.Date(DateTime.LocalNow())), TextDate = Text.From(Date.Year(DateReference)) & "-" & Text.PadStart(Text.From(Date.Month(DateReference)), 2, "0") & "-" & Text.PadStart(Text.From(Date.Day(DateReference)), 2, "0"), URLSource = "https://www.xe.com/currencytables/?from="&DeviseReference&"&date="&TextDate, //Requêtes Source = Web.Page(Web.Contents(URLSource)),
Voilà, maintenant vous pouvez fermer et charger PowerQuery.
Votre requête va à nouveau actualiser les taux suite aux modifications réalisées.
Si vous changez les valeurs de la devise de référence et la date dans votre table de paramètres, votre table sera actualisée avec ces nouvelles valeurs.
Actualiser les données
Vous devriez obtenir un fichier Excel qui ressemble à ça :
Cliquez sur Actualiser Tout dans le menu Données pour rafraîchir les taux de change des devises sans effort !
Vous pouvez faire quelques améliorations:
- Par exemple, en récupérant la liste des devises disponibles pour le paramètre Devise de référence
- Si vous souhaitez récupérer les taux pour plusieurs dates, créez une table des dates dans Excel, chargez-la dans PowerQuery et utilisez-la dans la requête de connexion. Cela demande un peu de repenser la structure mais c’est possible
Voilà, vous savez désormais comment créer une requête de connexion à des données web, en plus vous avez obtenu une super astuce pour charger des paramètres dans PowerQuery via une fonction personnalisée.😉
👇 Téléchargez le fichier Excel en exemple pour vous entraîner !
📥Téléchargement
Téléchargez le classeur Excel pour ce tutoriel. Seuls votre adresse e-mail et nom vous seront demandés dans la prochaine étape. Vous recevrez le lien de téléchargement par e-mail.
PowerQuery: Requête d'actualisation des taux de change
Envoyer le lien de téléchargement à :
Enfin, si vous souhaitez apprendre une méthode rapide et efficace pour collecter et analyser vos données dans Excel à l’aide de PowerQuery ou Power BI, et créer des rapports dynamiques, je vous propose un programme 100% en ligne spécialement conçu pour découvrir et maîtriser les Power Tools de Microsoft facilement👏👏 :
🥇MAITRISEZ L’ANALYSE DES DONNEES AVEC EXCEL ET POWER BI
(RECEVEZ 1H DE FORMATION GRATUITE)