Des questions ou un problème ? Écris dans les GitHub Discussions.

Google Sheets propose GOOGLEFINANCE pour les taux de change, et pour une conversion rapide, ça fait l'affaire. Le hic, c'est la source : un taux de marché combiné anonyme, que tu ne peux ni inspecter ni choisir. Frankfurter combine des taux de banques centrales que tu peux inspecter, et quand la source doit être exacte, tu peux t'en tenir à une seule autorité : le taux de référence de la BCE pour la TVA européenne, la NBP polonaise ou le taux PTAX brésilien. L'historique d'un fournisseur choisi reste tel qu'il a été publié. Les formules ci-dessous s'utilisent partout où tu mettrais GOOGLEFINANCE.

Démarrage rapide

Aucune configuration, aucune clé API. Place un taux en direct dans une cellule avec IMPORTDATA et l'endpoint CSV :

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur")

Sheets remplit un petit tableau date,base,quote,rate. La colonne date arrive sous forme de numéro de série. Sélectionne-la et choisis Format, Nombre, Date pour la rendre lisible. Demande plusieurs devises cibles à la fois en les séparant par des virgules :

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp,jpy")

Convertir un montant

IMPORTDATA renvoie le taux, pas le montant converti. Multiplie ton montant par la cellule du taux importé, ou utilise la fonction personnalisée ci-dessous pour tout faire en un seul appel.

Fonction personnalisée

Pour une fonction =FRANKFURTER() réutilisable, ajoute quelques lignes d'Apps Script. Dans ta feuille, ouvre Extensions, Apps Script, colle ce code et enregistre :

/**
 * Convertit un montant d'une devise à une autre, au taux du jour ou à une date donnée.
 * @customfunction
 */
function FRANKFURTER(amount, from, to, date) {
  let url = `https://api.frankfurter.dev/v2/rate/${from}/${to}`;
  if (date) {
    const tz = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
    url += `?date=${Utilities.formatDate(date, tz, "yyyy-MM-dd")}`;
  }
  const data = JSON.parse(UrlFetchApp.fetch(url).getContentText());
  return amount * data.rate;
}

Appelle-la ensuite depuis n'importe quelle cellule :

=FRANKFURTER(100, "usd", "eur")

Passe une date pour obtenir un taux historique :

=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))

Choisir une source officielle

Par défaut, tu obtiens le taux combiné de toutes les sources. Ajoute providers pour t'en tenir à une seule autorité. C'est important pour la fiscalité et la comptabilité : de nombreux pays imposent le taux publié par leur propre banque centrale pour convertir des montants en devises étrangères.

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb")
ECB
Taux de référence de la Banque centrale européenne, la norme pour la TVA et les douanes dans l'UE.
NBP
Narodowy Bank Polski. En Pologne, la TVA et l'impôt sur les sociétés se convertissent au taux de la NBP.
CNB
Fixing de la Banque nationale tchèque, utilisé pour la comptabilité et la fiscalité en Tchéquie.
BCB
Taux PTAX du Banco Central do Brasil, la référence pour les contrats et la fiscalité au Brésil.
BANXICO
Taux FIX du Banco de México, pour le règlement des dettes libellées en dollars américains.

Consulte toutes les sources. Une source choisie suit son propre calendrier de publication : son dernier taux peut donc avoir un jour de retard sur le dernier taux combiné.

Séries historiques

Utilise from pour une plage de dates et group=month pour la réduire à une ligne par mois, prête à mettre en graphique. L'historique combiné peut bouger légèrement quand de nouvelles données arrivent. Choisis un fournisseur quand les chiffres doivent rester fixes.

=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month")

Cette formule récupère le dollar américain face à la livre sterling depuis 1949, dans les archives de la Deutsche Bundesbank. Tu y vois le cable tenir sa parité fixe de 2,80 $ pendant des années, puis décrocher en 1967. L'historique ancien vient des fixings de la Bundesbank à Francfort : le dollar contre le mark dès 1948, la plupart des autres paires en dollar de 1949 à 1970. La Banque centrale européenne prend le relais à partir de 1999 : pour une série moderne continue, utilise le taux combiné par défaut ou providers=ecb.