Sur Excel, comment convertir un nombre en texte ?

par exemple convertir 50 en cinquante

Obelix, j’ai déja essayé mais ca ne marche pas..

11 Answers

  • Bonjour,

    A l’aide d’une macro… (il n’y a apparemment pas de fonctions pour cela)

    Essaye celle ci, je pense qu’elle fonctionne http://www.cathyastuce.com/excel/astuces.php#conve…

    Sinon juste pour vérifier l’orthographe exacte d’un nombre en lettre il y a http://www.leconjugueur.com/ (voir le lien a gauche)

    Bonne journée.

  • Il existe des macros complémentaires téléchargeables sur Internet. Il faut ensuite les activer pour quelles puisssent fonctionner. outils/macro complementaires et cocher.

  • Désolé mais Obelix à tort… Ca ne permettra en aucun cas de trancrire directement ton chiffre en « version » Texte !

  • Tu fais une seconde feuille, avec toutes les valeurs littérales qui t’intéressent

    0 zéro

    1 un

    2 deux

    Tu utilises alors la formule VLOOKUP(val;feuille2!A:B;2)

  • je vois parce qu’ici il est 1h06

  • voir ce site

    il faut écrire en VBA

    www.excelabo.net/moteurs/compteclic.php?nom=bj-chiffres-en-lettres

  • Clic droit sur la cellule, format de cellule, format texte

  • très bonne question, j’ai une DLL qui fait ça, c’est pas trop dur de l’interfacer sur excel.

    voici le source en Delphi de la DLL :

    library SPFUTILS;

    uses

    SysUtils,

    Classes,

    Math,

    Commdlg,

    Windows;

    {$E DLL}

    Procedure NombreEcrit(Nombre:double; var Ecrit; var LenEcrit:longint); stdcall;

    const

    Unite:array[1..19] of string=(

    ‘un’,’deux’,’trois’,’quatre’,’cinq’,’six’,’sept’,’huit’,

    ‘neuf’,’dix’,’onze’,’douze’,’treize’,’quatorze’,’quinze’,

    ‘seize’,’dix sept’,’dix huit’,’dix neuf’);

    Dizaine:array[1..8] of string=(

    ‘dix’,’vingt’,’trente’,’quarante’,’cinquante’,’soixante’,

    ‘sd’,’quatre vingt’);

    Exposant:array[1..3] of string=(‘mille’,’million’,

    ‘milliard’);

    var

    Result:string;

    nb, {reste à traiter}

    nb3, {nb sur 3 chiffres courant}

    nbC, {nb centaines}

    nbD, {nb dizaines}

    nbU, {unités restantes sur 3}

    base:int64;

    ExpCour:integer;

    begin

    nb:=round(nombre);

    Result:= »;

    ExpCour:=0;

    Base:=1;

    while nb div base >999 do

    begin

    inc(ExpCour);

    Base:=Base*1000;

    end;

    if ExpCour>3 then

    begin

    result:=’Trop grand’;

    move(Result[1],Ecrit,length(Result));

    LenEcrit:=length(Result);

    exit;

    end;

    while Expcour>=0 do

    begin

    nb3:=nb div base;

    { centaines }

    nbC:=nb3 div 100;

    nbU:=nb3 mod 100;

    if nbC>0 then

    begin

    if nbC>1 then

    result:=result+’ ‘+Unite[nbC];

    result:=result+’ cent’+

    copy(‘s’,1,ord((nbC>1) and (nbU=0)));

    end;

    { dizaines }

    nbD:=nbU div 10;

    if nbD in [1,7,9] then dec(nbD);

    nbU:=nbU-10*nbD;

    if nbD>0 then

    result:=result+’ ‘+Dizaine[nbD]+

    copy(‘s’,1,ord((nbD=8) and (nbU=0)));

    if (nbD in [2..6]) and (nbU mod 10=1) then

    result:=result+’ et’;

    { unités }

    if (nbU>0) and not((nb3=1) and (ExpCour=1)) then

    result:=result+’ ‘+Unite[nbU];

    { exposant }

    if (ExpCour>0) and (nb3<>0) then

    result:=result+

    ‘ ‘+exposant[expcour]+

    copy(‘s’,1,ord((ExpCour>1) and (nb3>1)));

    dec(ExpCour);

    nb:=nb mod base;

    Base:=Base div 1000

    end;

    result:=copy(result,2,1000);

    if length(Result)>LenEcrit then

    result:=copy(‘Buffer too small’,1,lenecrit);

    move(Result[1],Ecrit,length(Result));

    LenEcrit:=length(Result);

    end;

    exports

    NombreEcrit;

    begin

    end.

    ensuite on peut la déclarer dans un module de classes/

    le reste est facile…

  • obelix a raison…

  • slt c moi alpha ci etuide tu vas comprende

Laisser un commentaire