[Résolu] Colonne nombre avec correspondance en lettre(s)

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.

[Résolu] Colonne nombre avec correspondance en lettre(s)

Messagepar AndroPete » 12 Jan 2020 16:48

Bonjour à tous.
Je viens vers vous car je coince sur un problème depuis plusieurs heures sans trouver mon bonheur ni dans mon cerveau, ni sur ce forum, ni sur internet de manière générale... :oops:
Ce n'est sûrement pas grand chose, mais là, je coince...

Voilà : je cherche à convertir un nombre en lettre(s). Soit par une fonction qui m'aurait échappée, soit par une macro.

Je tiens à préciser que je ne cherche pas à convertir ceci : "12" en cela : "douze". Cela, je l'ai effectivement trouvé sur le forum, il s'agit d'ailleurs d'un classeur mal nommé puisqu'il s'intitule "ChiffresLettres.sxc" alors qu'il convertit des nombres en mots et non des chiffres en lettres (très efficace, cela dit).
Pour ma part, je cherche à convertir ceci "z" en "26", "aa" en "27",...
Merci par avance.
Dernière édition par Bidouille le 13 Jan 2020 08:54, édité 2 fois.
Raison: Balisage
Apache Open Office 4.1.6 - Win 7
AndroPete
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 12 Jan 2020 16:29

Re: Convertir un nombre en lettre(s)

Messagepar joel275 » 12 Jan 2020 17:38

Bonjour,
AndroPete a écrit:Convertir un nombre en lettre(s)

puis:
AndroPete a écrit:je cherche à convertir ceci "z" en "26", "aa" en "27",

n'est-ce pas un peu contradictoire?
pour le deuxième cas, la fonction colonne du tableur est pour toi:
Code : Tout sélectionner   AgrandirRéduire
=COLONNE(AA1)
renverra 27.

A plus.
OpenOffice 4.1.2 LibreOffice 6-2-8-2 Windows 8.1
joel275
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 790
Inscrit le : 10 Jan 2009 09:05

Re: Convertir un nombre en lettre(s)

Messagepar AndroPete » 12 Jan 2020 17:42

Autant pour moi, en effet ! :roll:
Je cherche à convertir "26" en "z", "27" en "aa"
Apache Open Office 4.1.6 - Win 7
AndroPete
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 12 Jan 2020 16:29

Re: Convertir un nombre en lettre(s)

Messagepar Jean-Louis Cadeillan » 12 Jan 2020 17:59

Bonjour,
Si ton nombre est en A1, tu peux mettre ailleurs :
Code : Tout sélectionner   AgrandirRéduire
=MINUSCULE(STXT(ADRESSE(1;A1;4;1;"");1;NBCAR(ADRESSE(1;A1;4;1;""))-1))
Cordialement,
Jean-Louis
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_251), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5009
Inscrit le : 03 Jan 2009 00:56

RESOLU : Convertir un nombre en lettre(s)

Messagepar AndroPete » 12 Jan 2020 18:12

Super ! Merci à vous deux pour vos réponses. :D
Merci beaucoup à Jean-Louis, ça marche pour moi. :bravo:
Je vais étudier ta formule car de prime abord je ne comprends pas tout.

Et pour ceux que ça intéresserait, pendant ce temps-là j'ai résolu le problème par une fonction de macro :

Code : Tout sélectionner   AgrandirRéduire
Function  Nbre_en_lettre ( Nbre  As integer ) As string
dim lettres(46)
lettres = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "aj", "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at")
Nbre_en_lettre = lettres(Nbre-1)
End Function


Mais je reconnais que la formule de Jean-Louis est plus simple à mettre en place...
A+
Dernière édition par AndroPete le 12 Jan 2020 18:51, édité 1 fois.
Apache Open Office 4.1.6 - Win 7
AndroPete
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 12 Jan 2020 16:29

Re: Convertir un nombre en lettre(s)

Messagepar Jean-Louis Cadeillan » 12 Jan 2020 18:23

Merci pour ta fonction.
J'utilise juste un détournement de la fonction ADRESSE(), qui sert à donner une représentation textuelle de la référence d'une cellule, en lui faisant croire que le nombre qu'on veut traduire est le n° de colonne de la cellule et en lui imposant une notation A1 relative (sans $). Ensuite, il faut enlever le 1 qu'ADRESSE() met comme ligne (puisque ici on n'en a pas besoin) d'où l'utilisation de la fonction STXT(mais on aurait pu utiliser la fonction GAUCHE()). Cette formule est limitée au nombre 1024 (nombre de colonnes dans Calc).
Cordialement,
Jean-Louis
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_251), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5009
Inscrit le : 03 Jan 2009 00:56

Re: Convertir un nombre en lettre(s)

Messagepar AndroPete » 12 Jan 2020 18:44

Ce n'est pas évident à comprendre cette fonction ADDRESSE()... Surtout que l'aide intégrée de OO n'est visiblement pas bonne : pour le 2e argument, l'aide demande le numéro de colonne alors que toi tu y inscris "A1" (les coordonnées entières).
Encore merci, et bonne soirée.
Apache Open Office 4.1.6 - Win 7
AndroPete
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 12 Jan 2020 16:29

Re: Convertir un nombre en lettre(s)

Messagepar Jean-Louis Cadeillan » 12 Jan 2020 19:37

AndroPete a écrit:pour le 2e argument, l'aide demande le numéro de colonne
C'est exactement ce que j'utilise, car en A1, j'ai mis le nombre à convertir. Prenons un exemple (j'ai mis 27 en A1, donc je veux traduire le nombre 27) et décomposons la formule (je regarde la partie ADRESSE()) :
Code : Tout sélectionner   AgrandirRéduire
=ADRESSE(1;27;4;1;"")
Pour cette fonction, cela signifie : ligne 1, colonne 27, type 4 de référence, c'est à dire complètement relatif de type A1 (sans $), le quatrième argument, 1, est là pour dire à la fonction de construire une référence de type A1 et non L1C1 (si j'avais mis 0, ADRESSE() aurait renvoyé [R]1[C]27 au lieu de AA1), le dernier argument est là pour préciser que je ne veux pas de nom de feuille dans ma construction de référence qui ici ne servirait à rien. À noter que ces deux derniers arguments sont facultatifs, j'aurais pu tout aussi bien écrire :
Code : Tout sélectionner   AgrandirRéduire
=ADRESSE(1;27;4)
J’obtiens donc AA1 comme réponse de ADRESSE(), il me suffit d'utiliser une fonction qui supprimer le 1 final : c'est le rôle dévolu à STXT() dans la formule.
Cordialement,
Jean-Louis
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_251), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5009
Inscrit le : 03 Jan 2009 00:56

Re: [Résolu] Convertir un nombre en lettre(s)

Messagepar Bidouille » 13 Jan 2020 08:53

AndroPete a écrit:Je tiens à préciser que je ne cherche pas à convertir ceci : "12" en cela : "douze".

Et dans ce cas, un titre clair et explicite aurait été le bienvenu non ?
Afin que les prochains qui lanceront une recherche puissent trouver réponse avec ce fil.
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 10426
Inscrit le : 08 Nov 2005 17:23
Localisation : Brest, France

Re: [Résolu] Colonne nombre avec correspondance en lettre(s)

Messagepar joel275 » 13 Jan 2020 15:54

Bonjour,

et pour le fun le cas général de la fonction (plus de 2 lettres):
Code : Tout sélectionner   AgrandirRéduire
function lettres(nb as integer) as string
Dim r as integer, a as string   
   Do
      r = (nb mod 26)
      a = a + chr(r+96)      ' chr(96) = a
      nb = (nb - r) \ 26      ' division entière
   loop until nb = 0
   lettres = a
end function

A plus.
OpenOffice 4.1.2 LibreOffice 6-2-8-2 Windows 8.1
joel275
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 790
Inscrit le : 10 Jan 2009 09:05

Re: [Résolu] Colonne nombre avec correspondance en lettre(s)

Messagepar AndroPete » 13 Jan 2020 18:33

Merci Joel275 pour cette fonction complémentaire.
Apache Open Office 4.1.6 - Win 7
AndroPete
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 12 Jan 2020 16:29

Re: [Résolu] Convertir un nombre en lettre(s)

Messagepar AndroPete » 13 Jan 2020 18:43

Bidouille a écrit:
AndroPete a écrit:Je tiens à préciser que je ne cherche pas à convertir ceci : "12" en cela : "douze".

Et dans ce cas, un titre clair et explicite aurait été le bienvenu non ?
Afin que les prochains qui lanceront une recherche puissent trouver réponse avec ce fil.



Bonjour Bidouille
Je vois que vous avez modifié le titre de mon post. Pourquoi pas. Je n'y vois pas d'inconvénient mais personnellement le titre original me paraissait plus approprié.
Quand je lis le vôtre "Colonne nombre avec correspondance en lettre(s)" je ne le trouve pas du tout explicite par rapport à mon problème de base.
Et si j'avais voulu convertir "12" en "douze" le titre aurait été "convertir un nombre en MOT". Mais effectivement, j'aurais pu mettre "convertir un numéro de colonne en lettre(s)"

Cela étant, à chacun son interprétation des choses, et puis vous avez plus l'habitude que moi, vous êtes ici chez vous, et moi je viens tout juste d'arriver... :)
En tout cas, merci d'animer ce forum qui constitue une aide appréciable.
Apache Open Office 4.1.6 - Win 7
AndroPete
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 12 Jan 2020 16:29


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)