Aller au contenu principal

Qu'est-ce que la fonction DECOCT ?

Définition
La fonction DECOCT convertit un entier décimal en représentation octale (base 8). Elle accepte des valeurs de -536 870 912 à 536 870 911 et retourne une chaîne de texte.

Tu t'en sers pour ne pas refaire à la main la conversion base 10 vers base 8, une méthode qui demande de diviser successivement par 8 et de relire les restes à l'envers. C'est la porte d'entrée pour lire ou construire des permissions Unix/Linux, où chaque chiffre octal encode trois bits (lecture, écriture, exécution).

Si tu travailles en administration système, en programmation bas niveau ou en cybersécurité, tu croiseras forcément l'octal. DECOCT te permet de calculer des permissions dynamiquement dans Excel, de générer des tables de conversion ou de documenter des configurations système sans jamais faire de conversion à la main.

Syntaxe

Clique sur un argument pour aller à son explication.

Les nombres négatifs sont représentés en complément à deux sur 30 bits. Par exemple, =DECOCT(-1) retourne "7777777777" (10 caractères), ce qui peut surprendre si tu attends un signe moins.

Le savais-tu ?
Avec un nombre négatif, DECOCT ne met pas de signe moins : elle passe par le complément à deux sur 30 bits. C'est pour ça que DECOCT(-1) renvoie 7777777777, soit dix chiffres, ce qui déroute la première fois.
Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction DECOCT

DECOCT prend d'abord le nombre à convertir, puis un second argument facultatif qui fixe la largeur du résultat. C'est ce nb_caractères qu'on néglige le plus souvent, alors que c'est lui qui te donne des permissions Unix bien alignées sur 3 chiffres (007 plutôt que 7) au lieu d'une colonne en dents de scie.

1

nombre

: le nombre décimal entier à convertir en octal

Il peut être saisi directement ou provenir d'une référence de cellule. La plage acceptée est -536 870 912 à 536 870 911, ce qui couvre largement les besoins courants (permissions Unix, codes ASCII, masques de bits).

Si tu passes un nombre avec une partie décimale (ex. 7,9), Excel tronque silencieusement la partie après la virgule et convertit l'entier (7 dans ce cas). Pour arrondir au lieu de tronquer, utilise ARRONDI avant : =DECOCT(ARRONDI(A1;0)).

Attention : Au-delà de la plage -536 870 912 à 536 870 911, Excel retourne #NOMBRE!. Si tu travailles avec des valeurs potentiellement hors plage, protège-toi avec =SIERREUR(DECOCT(A1); "Hors plage").

2

[nb_caractères]

: le nombre de caractères à utiliser pour le résultat(facultatif)

Si omis, Excel utilise le minimum nécessaire. Si spécifié, le résultat est complété avec des zéros non significatifs à gauche pour atteindre la longueur demandée.

Ce paramètre est essentiel pour formater uniformément des colonnes de valeurs octales, respecter un format de données technique (ex. permissions Unix toujours sur 3 chiffres), ou aligner visuellement des tableaux de conversion.

Attention : Si nb_caractères est trop petit pour contenir le résultat, Excel retourne #NOMBRE!. Par exemple, =DECOCT(100;2) échoue car 100 en octal est "144" (3 caractères).

Le conseil du pro
Tu peux passer une expression directement à DECOCT : DECOCT(4+2+1) calcule 7 puis le convertit. Idéal pour les permissions Unix, où tu additionnes lecture (4), écriture (2) et exécution (1) avant de convertir en une seule formule.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment convertir une valeur décimale en code chmod avec la fonction DECOCT

Un audit de sécurité te réclame les droits de chaque fichier en notation chmod, mais l'inventaire qu'on t'a transmis ne contient que des entiers, 493 ou 420, parce que c'est sous cette forme que le système les stocke. Tu as la colonne décimale et tu veux le code chmod lisible en face. La fonction DECOCT bascule ces nombres en octal, la notation dans laquelle les permissions Unix se lisent naturellement.

Les étapes
  1. 1
    Dans une cellule, écris =DECOCT(.
  2. 2
    En 1er argument : clique sur la cellule qui contient la valeur décimale à convertir, B2. Elle affiche 493, les droits du fichier f1.sh tels que le système les stocke.
  3. 3
    En 2ᵉ argument : saisis le nombre de chiffres que doit compter le résultat, 3. Un code chmod en affiche toujours trois, un par groupe de droits, et ce second argument complète le résultat par des zéros à gauche quand la conversion en donne moins.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Les cinq fichiers de l'inventaire affichent alors leur code chmod en face de leur valeur décimale.
Au final, ta formule devrait ressembler à ça :=DECOCT(B2; 3)
Explication
La fonction DECOCT rend chaque chiffre octal égal à un groupe de 3 bits, ce qui recolle pile aux trois blocs de droits d'un fichier : 493 ressort 755, soit 7 pour le propriétaire, 5 pour le groupe et 5 pour les autres. Le second argument garantit les 3 chiffres, y compris quand la valeur est petite.
Exemple 2

Comment repérer un fichier en 777 en combinant les fonctions DECOCT et SI

Ton inventaire compte des centaines de fichiers et un seul en 777 suffit à faire tomber l'audit, mais personne ne va relire une colonne d'entiers ligne par ligne pour le trouver. Tu as les valeurs décimales et tu veux une alerte franche, en clair, sur les seules lignes à problème. En imbriquant ta fonction DECOCT dans une fonction SI, tu convertis et tu testes dans la même cellule.

Les étapes
  1. 1
    Dans une cellule, écris =SI(.
  2. 2
    En 1er argument : écris le test qui doit repérer les fichiers ouverts à tous les droits, DECOCT(B2; 3)="777". La conversion tourne à l'intérieur du test et se referme avant la comparaison. Les guillemets autour de 777 sont obligatoires, parce que la fonction DECOCT renvoie du texte et jamais un nombre.
  3. 3
    En 2ᵉ argument : saisis le texte à afficher quand le test est vrai, "Risque". Seuls f3.sh et f14.sh le déclenchent ici, car leur valeur 511 se convertit en 777.
  4. 4
    En 3ᵉ argument : saisis le texte à afficher quand le test est faux, "OK". Les trois autres fichiers retombent dans ce cas, avec 755 pour f1.sh, 600 pour f5.sh et 640 pour f18.sh.
  5. 5
    Ferme la parenthèse et appuie sur Entrée. Une seule parenthèse reste à fermer, celle de la fonction SI, puisque la fonction DECOCT a été refermée dans son étape.
Voici la formule que tu obtiens à la fin :=SI(DECOCT(B2; 3)="777"; "Risque"; "OK")
Explication
La fonction DECOCT convertit d'abord la valeur, puis la fonction SI compare ce résultat au code 777, celui qui ouvre tous les droits à tout le monde. La comparaison porte sur du texte et non sur un nombre, car la fonction DECOCT renvoie toujours une chaîne : les guillemets autour de 777 sont donc obligatoires.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction DECOCT

Le #NOMBRE! est de loin ce que tu verras le plus avec DECOCT, et il vient de deux endroits : soit ton nombre sort de la plage -536 870 912 à 536 870 911, soit le nb_caractères demandé est trop court pour contenir le résultat (=DECOCT(100;2) plante car 144 tient sur 3 chiffres).

Viennent ensuite le #VALEUR! quand la cellule source contient du texte au lieu d'un nombre, et le piège des négatifs qui sortent en complément à deux (=DECOCT(-1) donne "7777777777") plutôt qu'avec un signe moins.

Erreur #NOMBRE! par dépassement de plage

Le nombre décimal dépasse la plage autorisée de -536 870 912 à 536 870 911. Ces limites correspondent à la représentation sur 30 bits utilisée par Excel pour les nombres octaux.

Solution : Vérifie que tes valeurs restent dans la plage autorisée. Si des valeurs hors plage sont possibles, protège la formule : =SIERREUR(DECOCT(A1); "Hors plage"). Pour la plupart des usages courants (permissions Unix, codes ASCII), ces limites sont largement suffisantes.

Erreur #NOMBRE! avec un nb_caractères trop petit

=DECOCT(100;2) génère une erreur car 100 en octal est "144" (3 caractères), qui ne peut pas tenir sur 2 caractères. Excel ne tronque pas silencieusement : il retourne une erreur.

Solution : Vérifie que nb_caractères est suffisamment grand, ou omets ce paramètre pour laisser Excel déterminer automatiquement la longueur. La longueur maximale acceptée est de 10 caractères.

Erreur #VALEUR! avec du texte non numérique

DECOCT nécessite une valeur numérique en entrée. Si ta cellule source contient du texte (par exemple "450 euros"), Excel ne peut pas faire la conversion.

Solution : Vérifie le type de tes données avec ESTNUM. Pour convertir du texte numérique en nombre avant la conversion, utilise =DECOCT(CNUM(A1)). Si les données sont incertaines, protège avec =SI(ESTNUM(A1); DECOCT(A1); "Non numérique").

Résultat surprenant pour les nombres négatifs

Les nombres négatifs sont représentés en complément à deux sur 30 bits. =DECOCT(-1) retourne "7777777777" (10 caractères) au lieu d'un signe moins suivi de la valeur.

Solution : Si tu veux une représentation lisible avec signe, utilise : =SI(A1<0; "-"&DECOCT(ABS(A1)); DECOCT(A1)). Cela affiche par exemple -7 au lieu de la représentation en complément à deux.

FAQ

Questions fréquentes

Aucune différence fonctionnelle. DEC2OCT est le nom anglais de la fonction, DECOCT est utilisé dans les versions françaises d'Excel. Les deux effectuent exactement la même conversion de décimal vers octal.

Ressources

Pour aller plus loin

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

Tout voir