Aller au contenu principal

Qu'est-ce que la fonction DECIMAL ?

Définition
La fonction DECIMAL convertit un texte représentant un nombre dans une base donnée (2 à 36) vers sa valeur en base 10 (décimale). Elle est la réciproque de la fonction BASE.

DECIMAL te sert quand un export technique te livre des valeurs écrites dans une base que tu ne sais pas lire d'un coup d'œil (binaire, hexadécimal, octal), et que calculer la conversion à la main, puissance par puissance, prendrait un temps fou sur toute une colonne. Elle fait ce calcul pour toi, quelle que soit la base de départ, du moment qu'elle est comprise entre 2 et 36.

Concrètement, c'est elle qui transforme FF en 255, 1010 en 10, ou 77 en 63. Utile pour décoder des codes couleur HTML, analyser des permissions Unix, ou uniformiser des exports de systèmes qui ne parlent pas tous la même langue.

Syntaxe

=DECIMAL(texte; base)

Clique sur un argument pour aller à son explication.

Le savais-tu ?
En hexadécimal, F vaut 15, donc FF se lit F×16 + F, soit 15×16 + 15 = 255. C'est la valeur maximale sur 8 bits, et la raison pour laquelle #FFFFFF donne le blanc en HTML.
Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction DECIMAL

DECIMAL attend toujours ses deux arguments dans le même ordre : d'abord le nombre à convertir, puis la base dans laquelle il est écrit. Les deux sont obligatoires, et c'est leur cohérence qui compte : le texte doit être écrit avec les caractères autorisés par la base que tu indiques, sinon rien ne fonctionnera.

1

texte

: le nombre que tu veux convertir, écrit sous forme de texte

Par exemple, "1010" pour du binaire, "FF" pour de l'hexadécimal, ou "77" pour de l'octal. Attention : ce doit être du texte, pas un nombre. Si tu as un nombre dans une cellule, mets-le entre guillemets ou assure-toi qu'il est formaté en texte.

2

base

: la base dans laquelle ton nombre est écrit

Ce doit être un nombre entier entre 2 et 36. Les bases les plus courantes sont 2 (binaire), 8 (octal), 10 (décimal) et 16 (hexadécimal). Pour les bases supérieures à 10, les lettres A à Z représentent les chiffres 10 à 35.

Attention : Si la base est inférieure à 2 ou supérieure à 36, Excel retournera une erreur #NOMBRE!. Vérifie bien que ta base est dans la plage valide.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment convertir du binaire en décimal avec la fonction DECIMAL

Tu passes en revue les registres d'un équipement dont l'export ne sort que des codes binaires, et rien n'est comparable tant que ces codes restent des suites de 0 et de 1. Chaque ligne porte son code binaire, son registre, son type et sa zone, et tu veux la valeur réelle de chaque code en face, pour repérer d'un coup d'œil ceux qui sortent de l'ordinaire. La fonction DECIMAL lit le code dans sa base et te rend le nombre correspondant, ligne après ligne.

Les étapes
  1. 1
    Dans une cellule, écris =DECIMAL(.
  2. 2
    En 1er argument : clique sur la cellule qui porte le code à convertir, A2. Elle contient 1010, que la fonction DECIMAL lit comme une suite de symboles et non comme le nombre mille dix.
  3. 3
    En 2ᵉ argument : saisis la base dans laquelle ce code est écrit, 2, puisqu'il s'agit de binaire. C'est ce chiffre qui dit à la fonction DECIMAL comment interpréter les symboles, et le même 1010 vaudrait 520 si tu annonçais une base 8.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Les six registres reçoivent leur valeur décimale sans que tu additionnes une seule puissance de 2.
Au final, ta formule devrait ressembler à ça :=DECIMAL(A2; 2)
Explication
La fonction DECIMAL lit le code 1010 comme un nombre écrit en base 2 et rend sa valeur en base 10, soit 10. Recopiée vers le bas, elle traduit chaque registre d'un coup et confirme que 11111111 vaut 255 (la valeur maximale sur 8 bits), sans que tu additionnes une seule puissance de 2.
Exemple 2

Comment convertir des nombres écrits dans des bases différentes avec la fonction DECIMAL

Tu rapproches chaque semaine les exports de trois outils qui n'écrivent pas leurs identifiants dans la même base, et le moindre total est faux tant que tout n'est pas ramené au même langage. Chaque ligne porte l'identifiant et la base dans laquelle il a été écrit, et tu veux une colonne unique de valeurs comparables. La fonction DECIMAL accepte de lire la base dans une cellule, donc elle s'adapte à chaque ligne sans que tu écrives une formule différente par outil.

Les étapes
  1. 1
    Dans une cellule, écris =DECIMAL(.
  2. 2
    En 1er argument : clique sur la cellule qui porte l'identifiant à convertir, A2. Elle contient 1A3 tel qu'il est sorti de l'export, et la fonction DECIMAL ne cherche jamais à deviner toute seule dans quelle base il a été écrit.
  3. 3
    En 2ᵉ argument : clique sur la cellule qui porte la base de la ligne, B2, plutôt que d'écrire un chiffre en dur. La fonction DECIMAL y lit 16, puis 2 sur la ligne suivante et 36 trois lignes plus bas.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Chaque identifiant est décodé dans sa propre base par une seule et même formule, et les six valeurs deviennent comparables entre elles.
Voici la formule que tu obtiens à la fin :=DECIMAL(A2; B2)
Explication
Ici, la fonction DECIMAL va chercher sa base dans la colonne B au lieu de la lire dans la formule, donc une seule saisie couvre tout le tableau : 1A3 est décodé en base 16 et vaut 419, tandis que ZZ, lu en base 36, monte à 1 295. Tes valeurs deviennent enfin triables et comparables entre elles.
Exemple 3

Comment convertir un code couleur hexadécimal avec les fonctions DECIMAL et STXT

La charte graphique te donne les couleurs en hexadécimal, mais l'outil dans lequel tu dois les saisir ne comprend que le RGB, et tu as toute une palette à passer avant la livraison. Chaque ligne contient un code du type #FF5733, où le dièse est suivi de trois paires collées : FF pour le rouge, 57 pour le vert, 33 pour le bleu. La fonction DECIMAL sait traduire chaque paire, à condition qu'on la lui présente isolée.

Les étapes
  1. 1
    Dans une cellule, écris =DECIMAL(.
  2. 2
    En 1er argument : écris le découpage qui isole la paire du rouge et referme-le, STXT(A2; 2; 2). La cellule entière ne conviendrait pas, puisque #FF5733 colle le dièse et les trois paires. Ce découpage part du deuxième caractère et en prend deux, ce qui donne exactement FF.
  3. 3
    En 2ᵉ argument : saisis la base dans laquelle ces paires sont écrites, 16. Les codes couleur HTML sont en hexadécimal, où les lettres A à F prolongent les chiffres 0 à 9 jusqu'à 15, si bien que deux symboles suffisent à couvrir toutes les valeurs de 0 à 255.
  4. 4
    Ferme la parenthèse et appuie sur Entrée. Pour le vert et le bleu, reprends la même formule en déplaçant seulement le point de départ du découpage, 4 isole 57 et 6 isole 33, la base ne changeant pas d'une composante à l'autre.
Une fois les morceaux assemblés, ta formule donne ça :=DECIMAL(STXT(A2; 2; 2); 16)
Explication
La fonction STXT découpe la paire FF dans le code couleur, puis la fonction DECIMAL la lit en base 16 et rend 255. Répétée sur les trois paires, elle traduit #FF5733 en rgb(255, 87, 51), prêt à coller dans l'outil qui refuse l'hexadécimal.
Exemple 4

Comment éviter l'erreur #NOMBRE! avec les fonctions DECIMAL et SIERREUR

Tes références ont été saisies à la main quelque part en amont, et une poignée de lignes contiennent des caractères qui n'existent pas en hexadécimal, comme un G de trop ou un O majuscule tapé à la place d'un zéro. Il suffit d'une seule ligne fautive pour que la colonne se couvre d'erreurs #NOMBRE! et que le fichier devienne inexploitable pour ceux à qui tu l'envoies. En entourant la fonction DECIMAL d'un SIERREUR, tu convertis tout ce qui est convertible et tu signales proprement le reste.

Les étapes
  1. 1
    Dans une cellule, écris =SIERREUR(.
  2. 2
    En 1er argument : écris la conversion à surveiller et referme-la, DECIMAL(A2; 16). La fonction DECIMAL lit la référence 2F en base 16 et rend 47, mais elle refuse tout symbole étranger à la base annoncée : le G de 3G7 et le O de 1O5 n'existent pas en hexadécimal, où l'on s'arrête à F.
  3. 3
    En 2ᵉ argument : saisis le texte qui prendra la place de l'erreur, "Référence invalide". Les guillemets sont ce qui demande à Excel d'afficher ce message tel quel, et il n'apparaît que sur les lignes où la conversion a échoué.
  4. 4
    Ferme la parenthèse et appuie sur Entrée. Celle de la fonction DECIMAL ayant déjà été refermée à l'étape précédente, il n'en reste qu'une à écrire. Recopie ensuite la formule vers le bas pour couvrir les six références.
En mettant tout bout à bout, tu écris :=SIERREUR(DECIMAL(A2; 16); "Référence invalide")
Explication
La fonction DECIMAL convertit 2F en 47 sans difficulté, et SIERREUR n'a alors rien à faire. Deux lignes plus bas, 3G7 déclenche l'erreur #NOMBRE! (le G n'existe pas en base 16, où l'on s'arrête à F) et SIERREUR la remplace par ton message : la colonne reste lisible et les lignes fautives sautent aux yeux.
L’erreur fatale
DECIMAL renvoie #NOMBRE! dès qu'un caractère n'existe pas dans la base demandée : un 8 dans un nombre octal, un G en hexadécimal. Vérifie tes symboles ou filtre les entrées douteuses avec SIERREUR(DECIMAL(A1; 16); "invalide").
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction DECIMAL

Tout ce qui cloche avec DECIMAL finit presque toujours sur le même code : #NOMBRE!. Le cas que tu croiseras le plus, c'est un caractère qui n'existe pas dans la base demandée, comme un 8 glissé dans un nombre octal ou un G en hexadécimal.

Les deux autres pièges sont plus sournois car ils ne lèvent pas forcément d'erreur visible : oublier les guillemets autour du texte, et confondre DECIMAL avec sa réciproque BASE, qui fait exactement le chemin inverse.

Caractères invalides pour la base choisie

Excel retourne #NOMBRE! quand le texte contient un caractère qui n'existe pas dans la base spécifiée. Par exemple, le chiffre 8 dans un nombre octal (base 8), ou la lettre G en hexadécimal (base 16).

Solution : Vérifie que chaque caractère de ton texte est valide pour la base. En octal, seuls 0-7 sont autorisés. En hexadécimal, 0-9 et A-F (ou a-f). Corrige le texte source ou filtre les lignes invalides avec =SIERREUR(DECIMAL(A1; 16); "invalide").

Oublier que le premier paramètre doit être du texte

Si tu saisis un nombre sans guillemets dans la formule, Excel peut l'interpréter différemment de ce que tu attends, surtout pour les nombres avec des zéros initiaux ou des valeurs hexadécimales contenant des lettres.

Solution : Mets toujours ton nombre entre guillemets ("1010") ou stocke-le dans une cellule formatée en texte. Utilise =DECIMAL("1010"; 2) plutôt que =DECIMAL(1010; 2) pour lever toute ambiguïté.

Confondre DECIMAL et BASE (sens inverse)

DECIMAL convertit VERS le décimal (base 10). Si tu veux faire l'inverse, c'est-à-dire convertir un nombre décimal vers une autre base, utilise BASE, pas DECIMAL.

Solution : Souviens-toi du sens : DECIMAL prend une autre base et retourne du décimal. BASE prend du décimal et retourne une autre base. Pour passer du binaire 1010 au décimal : =DECIMAL("1010"; 2). Pour passer du décimal 10 au binaire : =BASE(10; 2).

Base hors de la plage valide (< 2 ou > 36)

DECIMAL n'accepte que des bases entre 2 et 36. Une base de 1 ou 37 provoque #NOMBRE! sans autre indication.

Solution : Vérifie que ta base est un entier entre 2 et 36 avant d'appeler DECIMAL. Si la base vient d'une cellule, ajoute une validation des données ou un =SI(ET(B1>=2; B1<=36); DECIMAL(A1; B1); "Base invalide").

Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec DECIMAL

1Astuce

Extraire une portion de code avant de convertir

Quand ton identifiant contient un préfixe (0x, #, 0b...) suivi du nombre, combine DROITE ou STXT avec DECIMAL pour isoler la partie utile avant de convertir. Par exemple, =DECIMAL(DROITE("0xFF"; 2); 16) extrait les deux derniers caractères FF puis les convertit en 255.
Tu peux aussi extraire le composant bleu d'un code couleur HTML : =DECIMAL(DROITE("#3498DB"; 2); 16) donne 219.

2Astuce

Créer un convertisseur universel entre deux bases quelconques

Combine DECIMAL et BASE pour convertir d'une base quelconque vers une autre sans passer manuellement par le décimal. =BASE(DECIMAL("1010"; 2); 16) convertit directement du binaire vers l'hexadécimal et retourne "A".
Cette technique fonctionne pour n'importe quelle paire de bases entre 2 et 36.

3Astuce

Valider silencieusement une entrée dans une base donnée

Utilise SIERREUR autour de DECIMAL pour vérifier si une cellule contient un nombre valide dans une base donnée, sans faire planter toute la formule. =SIERREUR(DECIMAL(A1; 2); "Binaire invalide") retourne le nombre si A1 est un binaire correct, ou le message d'erreur sinon.
Idéal pour valider des imports ou des saisies utilisateur avant de les traiter.

FAQ

Questions fréquentes

DECIMAL convertit un nombre en base quelconque vers la base 10 (décimale), tandis que BASE fait l'inverse : elle convertit un nombre décimal vers une autre base. Ce sont deux fonctions complémentaires. Utilise DECIMAL quand tu veux "lire" un nombre dans une autre base, et BASE quand tu veux "écrire" un nombre dans une autre base.

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction DECIMAL : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir